|
-
- // LogonServerDlg.cpp : 实现文件
- //
-
- #include "stdafx.h"
- #include "LogonServer.h"
- #include "LogonServerDlg.h"
- #include "afxdialogex.h"
- #include "StatisticalUser.h"
- #include <strsafe.h>
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #endif
- #define WM_MYMSG (WM_USER+110) //禁止加入房间与禁止分配
- #define WM_MYMSGACK (WM_USER+111) //禁止加入房间与禁止分配的结果回复
-
- // 用于应用程序“关于”菜单项的 CAboutDlg 对话框
-
- class CAboutDlg : public CDialogEx
- {
- public:
- CAboutDlg();
-
- // 对话框数据
- enum { IDD = IDD_ABOUTBOX };
-
- protected:
- virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
-
- // 实现
- protected:
- DECLARE_MESSAGE_MAP()
- };
-
- CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
- {
- }
-
- void CAboutDlg::DoDataExchange(CDataExchange* pDX)
- {
- CDialogEx::DoDataExchange(pDX);
- }
-
- BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
- END_MESSAGE_MAP()
-
- STARTP CLogonServerDlg::g_StartP;
- // CLogonServerDlg 对话框
-
- bool CLogonServerDlg::SetShangBao(int Num)
- {
- CLogonServerApp* pCLogonServerApp = (CLogonServerApp*)AfxGetApp();
- CLogonServerDlg* pCLogonServerDlg = NULL;
-
- if (pCLogonServerApp)
- {
- pCLogonServerDlg = (CLogonServerDlg* )pCLogonServerApp->m_pMainWnd;
-
- CString csTest;
- csTest.Format(L"%d", Num);
- pCLogonServerDlg->mShangBao.SetWindowTextW(csTest);
- }
- return true;
- }
-
- bool CLogonServerDlg::SetJiQi(CString a)
- {
- CLogonServerApp* pCLogonServerApp = (CLogonServerApp*)AfxGetApp();
- CLogonServerDlg* pCLogonServerDlg = NULL;
-
- if (pCLogonServerApp)
- {
- pCLogonServerDlg = (CLogonServerDlg*)pCLogonServerApp->m_pMainWnd;
-
- pCLogonServerDlg->mJiQi.SetWindowTextW(a);
- }
- return true;
- }
-
- bool CLogonServerDlg::SetUpdata(CString a)
- {
- CLogonServerApp* pCLogonServerApp = (CLogonServerApp*)AfxGetApp();
- CLogonServerDlg* pCLogonServerDlg = NULL;
-
- if (pCLogonServerApp)
- {
- pCLogonServerDlg = (CLogonServerDlg*)pCLogonServerApp->m_pMainWnd;
-
- pCLogonServerDlg->csUpdata.SetWindowTextW(a);
- }
- return true;
- }
-
- CLogonServerDlg::CLogonServerDlg(CWnd* pParent /*=NULL*/)
- : CDialogEx(CLogonServerDlg::IDD, pParent)
- {
- m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
- iRenWuID = 0;
- }
-
- void CLogonServerDlg::DoDataExchange(CDataExchange* pDX)
- {
- CDialogEx::DoDataExchange(pDX);
- DDX_Control(pDX, IDC_TRACE_MESSAGE, m_TraceServiceControl);
- DDX_Control(pDX, IDC_TREE1, ServiceTree);
- DDX_Control(pDX, IDC_EDIT1, mShangBao);
- DDX_Control(pDX, IDC_EDIT2, mJiQi);
- DDX_Control(pDX, IDC_EDIT3, csUpdata);
- }
-
- BEGIN_MESSAGE_MAP(CLogonServerDlg, CDialogEx)
- ON_WM_SYSCOMMAND()
- ON_WM_PAINT()
- ON_WM_QUERYDRAGICON()
- ON_BN_CLICKED(IDC_START_SERVICE, &CLogonServerDlg::OnBnClickedStartService)
- ON_BN_CLICKED(IDC_STOP_SERVICE, &CLogonServerDlg::OnBnClickedStopService)
- ON_MESSAGE(WM_MYMSG, &CLogonServerDlg::OnMessageStop)
- ON_WM_QUERYENDSESSION()
- ON_NOTIFY(TVN_SELCHANGED, IDC_TREE1, &CLogonServerDlg::OnTvnSelchangedTree1)
- ON_NOTIFY(TVN_GETINFOTIP, IDC_TREE1, &CLogonServerDlg::OnTvnGetInfoTipTree1)
- ON_BN_CLICKED(IDC_BUTTON3, &CLogonServerDlg::OnBnClickedButton3)
- ON_BN_CLICKED(IDC_BUTTON1, &CLogonServerDlg::OnBnClickedButton1)
- ON_NOTIFY(NM_DBLCLK, IDC_TREE1, &CLogonServerDlg::OnNMDblclkTree1)
- ON_WM_TIMER()
- END_MESSAGE_MAP()
-
- // CLogonServerDlg 消息处理程序
-
- //停止业务
- LRESULT CLogonServerDlg::OnMessageStop(WPARAM wParam, LPARAM lParam)
- {
- WORD wTest = lParam;
- if (wTest != g_StartP.wServerID)
- {
- return 0;
- }
-
- iRenWuID = wParam;//任务ID
-
- //延迟关闭时间
- SetTimer(101, 31 * 60 * 1000, NULL);
- return 0L;
- }
-
- BOOL CLogonServerDlg::OnInitDialog()
- {
- CDialogEx::OnInitDialog();
-
- memset(m_AppPath, 0, sizeof(m_AppPath));
- GetModuleFileName(AfxGetInstanceHandle(), m_AppPath, sizeof(m_AppPath));
- CString strCaption;
- strCaption.Format(TEXT("登录服务器 -- [ 停止 ](路径:%s)"), m_AppPath);
-
- SetWindowText(strCaption/*TEXT("登录服务器 -- [ 停止 ]")*/);
- // 将“关于...”菜单项添加到系统菜单中。
- // IDM_ABOUTBOX 必须在系统命令范围内。
- ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
- ASSERT(IDM_ABOUTBOX < 0xF000);
-
- CMenu* pSysMenu = GetSystemMenu(FALSE);
- if (pSysMenu != NULL)
- {
- BOOL bNameValid;
- CString strAboutMenu;
- bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
- ASSERT(bNameValid);
- if (!strAboutMenu.IsEmpty())
- {
- pSysMenu->AppendMenu(MF_SEPARATOR);
- pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
- }
- }
-
- // 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动
- // 执行此操作
- HICON hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME));
- SetIcon(hIcon, TRUE); // 设置大图标
- SetIcon(hIcon, FALSE); // 设置小图标
-
- // TODO: 在此添加额外的初始化代码
- m_ServiceUnits.SetServiceUnitsSink(this);
-
- HICON hIconNow[4]; // 图标句柄数组
- HTREEITEM hCataItem; // 可表示任一分类节点的句柄
-
- // 加载三个图标,并将它们的句柄保存到数组
- hIconNow[0] = theApp.LoadIcon(IDI_ICON3);
- hIconNow[1] = theApp.LoadIcon(IDI_ICON1);
- hIconNow[2] = theApp.LoadIcon(IDI_ICON4);
- hIconNow[3] = theApp.LoadIcon(IDI_ICON6);
- // 创建图像序列CImageList对象
- m_imageList.Create(32, 32, ILC_COLOR32, 3, 3);
- // 将三个图标添加到图像序列
- for (int i = 0; i<3; i++)
- {
- m_imageList.Add(hIconNow[i]);
- }
-
- // 为树形控件设置图像序列
- ServiceTree.SetImageList(&m_imageList, TVSIL_NORMAL);
-
- // 插入根节点
- hRoot = ServiceTree.InsertItem(_T("提供服务的游戏服务器"), 0, 0);
-
- TCHAR szWorkDir[MAX_PATH] = TEXT("");
- CWHService::GetWorkDirectory(szWorkDir, CountArray(szWorkDir));
-
- //构造路径
- TCHAR szIniFile[MAX_PATH] = TEXT("");
- _sntprintf(szIniFile, CountArray(szIniFile), TEXT("%s\\Parameter.ini"), szWorkDir);
-
- g_StartP.iAuto = GetPrivateProfileInt(TEXT("Server"), TEXT("Auto"), 0, szIniFile);
- g_StartP.wServerID = GetPrivateProfileInt(TEXT("Server"), TEXT("ServerID"), 1, szIniFile);
-
- //读取字符
- GetPrivateProfileString(TEXT("SYS"), TEXT("守护进程"), TEXT(""), g_StartP.szShouHu, CountArray(g_StartP.szShouHu), szIniFile);
- GetPrivateProfileString(TEXT("SYS"), TEXT("策略获取地址"), TEXT(""), g_StartP.szCeLv, CountArray(g_StartP.szCeLv), szIniFile);
-
- if (g_StartP.iAuto == 1)
- {
- OnBnClickedStartService();
- SetTimer(1, 2000, NULL);
- }
-
- return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
- }
-
- void CLogonServerDlg::OnSysCommand(UINT nID, LPARAM lParam)
- {
- if ((nID & 0xFFF0) == IDM_ABOUTBOX)
- {
- CAboutDlg dlgAbout;
- dlgAbout.DoModal();
- }
- else
- {
- CDialogEx::OnSysCommand(nID, lParam);
- }
- }
-
- // 如果向对话框添加最小化按钮,则需要下面的代码
- // 来绘制该图标。 对于使用文档/视图模型的 MFC 应用程序,
- // 这将由框架自动完成。
-
- void CLogonServerDlg::OnPaint()
- {
- if (IsIconic())
- {
- CPaintDC dc(this); // 用于绘制的设备上下文
-
- SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
-
- // 使图标在工作区矩形中居中
- int cxIcon = GetSystemMetrics(SM_CXICON);
- int cyIcon = GetSystemMetrics(SM_CYICON);
- CRect rect;
- GetClientRect(&rect);
- int x = (rect.Width() - cxIcon + 1) / 2;
- int y = (rect.Height() - cyIcon + 1) / 2;
-
- // 绘制图标
- dc.DrawIcon(x, y, m_hIcon);
- }
- else
- {
- CDialogEx::OnPaint();
- }
- }
-
- //当用户拖动最小化窗口时系统调用此函数取得光标
- //显示。
- HCURSOR CLogonServerDlg::OnQueryDragIcon()
- {
- return static_cast<HCURSOR>(m_hIcon);
- }
-
-
-
- VOID CLogonServerDlg::OnServiceUnitsStatus(enServiceStatus ServiceStatus)
- {
- //状态设置
- switch (ServiceStatus)
- {
- case ServiceStatus_Stop: //停止状态
- {
- CString strCaption;
- strCaption.Format(TEXT("登录服务器V1.2 --[停止](路径:%s)"), m_AppPath);
- SetWindowText(strCaption);
-
- //设置按钮
- GetDlgItem(IDC_STOP_SERVICE)->EnableWindow(FALSE);
- GetDlgItem(IDC_START_SERVICE)->EnableWindow(TRUE);
-
- //提示信息
- LPCTSTR pszDescribe = TEXT("服务停止成功");
- CTraceService::TraceString(pszDescribe, TraceLevel_Normal);
-
- break;
- }
- case ServiceStatus_Config: //配置状态
- {
- CString strCaption;
- strCaption.Format(TEXT("登录服务器V1.2 -- [ 初始化 ](路径:%s)"), m_AppPath);
- //设置标题
- SetWindowText(strCaption);
-
- //设置按钮
- GetDlgItem(IDC_STOP_SERVICE)->EnableWindow(TRUE);
- GetDlgItem(IDC_START_SERVICE)->EnableWindow(FALSE);
-
- //提示信息
- LPCTSTR pszDescribe = TEXT("正在初始化组件...");
- CTraceService::TraceString(pszDescribe, TraceLevel_Normal);
-
- break;
- }
- case ServiceStatus_Service: //服务状态
- {
- CString strCaption;
- strCaption.Format(TEXT("登录服务器V1.2 -- [ 运行 ](路径:%s)"), m_AppPath);
- //设置标题
- SetWindowText(strCaption);
-
- //设置按钮
- GetDlgItem(IDC_STOP_SERVICE)->EnableWindow(TRUE);
- GetDlgItem(IDC_START_SERVICE)->EnableWindow(FALSE);
-
- //提示信息
- LPCTSTR pszDescribe = TEXT("服务启动成功");
- CTraceService::TraceString(pszDescribe, TraceLevel_Normal);
-
- break;
- }
- }
-
- return;
- }
-
- void CLogonServerDlg::OnBnClickedStartService()
- {
- //启动服务
- try
- {
- //启用共享内存
- HANDLE m_hMapFile = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, _T("GAMESERVERINFOG__"));
- if (m_hMapFile)
- {
- //显示共享的文件数据。
- LPTSTR lpMapAddr = (LPTSTR)MapViewOfFile(m_hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 0);
-
- HINSTANCE hInst = NULL;
- hInst = AfxGetApp()->m_hInstance;
- TCHAR path_buffer[_MAX_PATH] = { 0 };
- GetModuleFileName(hInst, path_buffer, sizeof(path_buffer));//得到exe文件的全路径
-
- GAMESERVERINFOALL *pBuffer = (GAMESERVERINFOALL *)lpMapAddr;
-
- //检测当前节点是否存在
- if (pBuffer->iNum > 20)
- {
- CTraceService::TraceString(TEXT("共享内存数据数据混乱"), TraceLevel_Warning);
- goto look;
- }
-
- //查找节点是否已经存在
- for (int i = 0; i < pBuffer->iNum; i++)
- {
- if (pBuffer->Data[i].dServerID == g_StartP.wServerID)
- {
- StringCchCopy(pBuffer->Data[i].szPath, 256, path_buffer);
- pBuffer->Data[i].iStat = 1;
- pBuffer->Data[i].Pid = GetCurrentProcessId();
- FlushViewOfFile(lpMapAddr, sizeof(GAMESERVERINFOALL) + 1);
- goto look;
- }
- }
-
- (pBuffer->iNum)++;
- pBuffer->Data[pBuffer->iNum - 1].dServerID = g_StartP.wServerID;
- StringCchCopy(pBuffer->Data[pBuffer->iNum - 1].szPath, 256, path_buffer);
- pBuffer->Data[pBuffer->iNum - 1].iStat = 1;
- pBuffer->Data[pBuffer->iNum - 1].Pid = GetCurrentProcessId();
-
- FlushViewOfFile(lpMapAddr, sizeof(GAMESERVERINFOALL) + 1);
- }
- else
- {
- //创建共享文件。
- m_hMapFile = CreateFileMapping((HANDLE)0xFFFFFFFF, NULL,
- PAGE_READWRITE, 0, 0x10000, _T("GAMESERVERINFOG__"));
-
- //拷贝数据到共享文件里。
- LPTSTR lpMapAddr = (LPTSTR)MapViewOfFile(m_hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 0);
-
- HINSTANCE hInst = NULL;
- hInst = AfxGetApp()->m_hInstance;
- TCHAR path_buffer[_MAX_PATH] = { 0 };
- GetModuleFileName(hInst, path_buffer, sizeof(path_buffer));//得到exe文件的全路径
-
- GAMESERVERINFOALL Buffer;
- ZeroMemory(&Buffer, sizeof(GAMESERVERINFOALL));
- Buffer.iNum++;
- Buffer.Data[Buffer.iNum - 1].dServerID = g_StartP.wServerID;
- StringCchCopy(Buffer.Data[Buffer.iNum - 1].szPath, 256, path_buffer);
- Buffer.Data[Buffer.iNum - 1].iStat = 1;
- Buffer.Data[Buffer.iNum - 1].Pid = GetCurrentProcessId();
- StringCchCopy(Buffer.szCtrl, 256, g_StartP.szCeLv);
-
- memcpy(lpMapAddr, &Buffer, sizeof(GAMESERVERINFOALL));
- FlushViewOfFile(lpMapAddr, sizeof(GAMESERVERINFOALL) + 1);
- }
- look:
- m_ServiceUnits.StartService();
- }
- catch (...)
- {
- ASSERT(FALSE);
- }
-
- return;
- }
-
-
- void CLogonServerDlg::OnBnClickedStopService()
- {
- int iRet = MessageBox(L"确定关闭吗?", L"真的确定关闭我吗", MB_YESNO);
-
- if (IDYES != iRet)
- {
- return;
- }
-
- //停止服务
- try
- {
- m_ServiceUnits.ConcludeService();
- }
- catch (...)
- {
- ASSERT(FALSE);
- }
-
- return;
- }
-
-
- BOOL CLogonServerDlg::OnQueryEndSession()
- {
- //提示消息
- if (m_ServiceUnits.GetServiceStatus() != ServiceStatus_Stop)
- {
- CTraceService::TraceString(TEXT("服务正在运行中,系统要求注销回话请求失败"), TraceLevel_Warning);
- return FALSE;
- }
-
- // TODO: 在此添加专用的查询结束会话代码
-
- return TRUE;
- }
-
- BOOL CLogonServerDlg::PreTranslateMessage(MSG * pMsg)
- {
- //按键过滤
- if ((pMsg->message == WM_KEYDOWN) && (pMsg->wParam == VK_ESCAPE))
- {
- return TRUE;
- }
-
- return __super::PreTranslateMessage(pMsg);
- }
-
-
- void CLogonServerDlg::OnOK()
- {
- return;
- }
-
-
- void CLogonServerDlg::OnCancel()
- {
- //关闭询问
- if (m_ServiceUnits.GetServiceStatus() != ServiceStatus_Stop)
- {
- LPCTSTR pszQuestion = TEXT("登录服务器正在运行中,您确实要关闭服务器吗?");
- if (AfxMessageBox(pszQuestion, MB_YESNO | MB_DEFBUTTON2 | MB_ICONQUESTION) != IDYES) return;
- }
-
- //停止服务
- m_ServiceUnits.ConcludeService();
-
- __super::OnCancel();
- }
-
-
- void CLogonServerDlg::OnTvnSelchangedTree1(NMHDR *pNMHDR, LRESULT *pResult)
- {
- LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
- // TODO: 在此添加控件通知处理程序代码
- *pResult = 0;
- }
-
-
- //消息提示
- void CLogonServerDlg::OnTvnGetInfoTipTree1(NMHDR *pNMHDR, LRESULT *pResult)
- {
- LPNMTVGETINFOTIP pGetInfoTip = reinterpret_cast<LPNMTVGETINFOTIP>(pNMHDR);
- // TODO: Add your control notification handler code here
- *pResult = 0;
- NMTVGETINFOTIP* pTVTipInfo = (NMTVGETINFOTIP*)pNMHDR; // 将传入的pNMHDR转换为NMTVGETINFOTIP指针类型
- HTREEITEM hRoot = ServiceTree.GetRootItem(); // 获取树的根节点
- CString strText; // 每个树节点的提示信息
-
- if (pTVTipInfo->hItem == hRoot)
- {
- // 如果鼠标划过的节点是根节点,则提示信息为空
- strText = _T("");
- }
- else
- {
- // 如果鼠标划过的节点不是根节点,则将该节点的附加32位数据格式化为字符串
- DWORD dServerID = pTVTipInfo->lParam;
- CGameServerItem * pCGameServerItem = m_ServiceUnits.m_AttemperEngineSink.m_ServerListManager.SearchGameServer(dServerID);
-
- if (pCGameServerItem)
- {
- strText.Format(_T("节点编号%d,在线人数%d/%d,在线牌桌%d/%d"), pTVTipInfo->lParam
- , pCGameServerItem->m_GameServer.dwOnLineCount, pCGameServerItem->m_GameServer.dwFullCount
- , pCGameServerItem->m_GameServer.wTableOnlineCount, pCGameServerItem->m_GameServer.wTableFullCount);
- }
- else
- {
- strText.Format(_T("节点编号%d,未找到此节点信息."), pTVTipInfo->lParam);
- }
- }
-
- // 将strText字符串拷贝到pTVTipInfo结构体变量的pszText成员中,这样就能显示内容为strText的提示信息
- wcscpy(pTVTipInfo->pszText, strText);
- }
-
-
- void CLogonServerDlg::OnBnClickedButton2()
- {
- // TODO: 在此添加控件通知处理程序代码
- }
-
-
- void CLogonServerDlg::OnBnClickedButton3()
- {
-
- }
-
-
- void CLogonServerDlg::OnBnClickedButton1()
- {
- // 更新通道
- m_ServiceUnits.m_AttemperEngineSink.m_pITCPNetworkEngine->OnTBDataEvent(217, 0, NULL, 0);
- }
-
-
- void CLogonServerDlg::OnNMDblclkTree1(NMHDR *pNMHDR, LRESULT *pResult)
- {
- // TODO: 在此添加控件通知处理程序代码
- HTREEITEM hTreeItem = ServiceTree.GetSelectedItem();
-
-
- DWORD dServerID = ServiceTree.GetItemData(hTreeItem);//获得当前选中节点的附件信息 HTREEITEM(可以是你存的一个32位的地址,强转成你存放的类型(CString*、float*.....)即可)
-
- //CString csTest;
- //csTest.Format(L"%d", dServerID);
- //MessageBox(csTest);
-
- CGameServerItem * pCGameServerItem = m_ServiceUnits.m_AttemperEngineSink.m_ServerListManager.SearchGameServer(dServerID);
-
- if (pCGameServerItem)
- {
- pCGameServerItem->m_GameServer.bService = !pCGameServerItem->m_GameServer.bService;
-
- HTREEITEM startitem = ServiceTree.GetChildItem(hRoot);
-
- while (startitem)
- {
- CString strTemp = ServiceTree.GetItemText(startitem);
- DWORD dData = ServiceTree.GetItemData(startitem);
-
- if (dData == dServerID)
- {
- if (pCGameServerItem->m_GameServer.bService > 0)
- {
- //正常服务状态
- ServiceTree.SetItemImage(startitem, 1, 1);
- break;
- }
- else if (pCGameServerItem->m_GameServer.bService == 0)
- {
- //主动不提供服务状态
- ServiceTree.SetItemImage(startitem, 2, 2);
- break;
- }
- else
- {
- //被攻击无法服务状态
- ServiceTree.SetItemImage(startitem, 3, 3);
- break;
- }
- }
- startitem = ServiceTree.GetNextSiblingItem(startitem);
- }
-
- }
- *pResult = 0;
- }
-
- //
- //void CLogonServerDlg::OnTimer(UINT_PTR nIDEvent)
- //{
- // // TODO: 在此添加消息处理程序代码和/或调用默认值
- // if (nIDEvent == 1)
- // {
- // KillTimer(1);
- // OnBnClickedButton1();
- // }
- // else if (nIDEvent == 101)
- // {
- // KillTimer(101);
- // try
- // {
- // m_ServiceUnits.ConcludeService();
- // }
- // catch (...)
- // {
- // ASSERT(FALSE);
- // }
- //
- // //通知任务
- // //检测人数是否已经退出,若都退出则关闭。
- // DWORD dwProcessID = NULL;
- // if (!StatisticalUser::GetTokenByName(dwProcessID, g_StartP.szShouHu))
- // {
- // CTraceService::TraceString(TEXT("未找守护进程,无法回报信息。"), TraceLevel_Warning);
- // return;
- // }
- //
- // CList<HWND> mList;
- //
- // if (!StatisticalUser::GetWindowHwndByPid(dwProcessID, mList))
- // {
- // CTraceService::TraceString(TEXT("未找守护进程对应的窗口,无法回报信息。"), TraceLevel_Warning);
- // return;
- // }
- //
- // //发送信息
- // POSITION pos = mList.GetTailPosition();
- // CString data;
- // while (pos != NULL)
- // {
- // HWND hHandle = mList.GetNext(pos);
- // ::SendMessage(hHandle, WM_MYMSGACK, iRenWuID, g_StartP.wServerID);
- // }
- // }
- // __super::OnTimer(nIDEvent);
- //}
|