void OnCommand(WPARAM wParam, LPARAM lParam) { switch (LOWORD(wParam)) { case IDM_STARTSERVICE: { //开始服务器 DWORD dwIP = 0; int nPort = 0; g_fTerminated = FALSE; g_pRandom.Random_Seed(0); //初始化等待ip ENGINE_COMPONENT_INFO info = g_SeverConfig.getLoginGateInfo(); nPort = info.extport?info.extport:7000; //初始化完成端口 InitServerSocket(g_ssock, &g_saddr, _IDM_SERVERSOCK_MSG, nPort, FD_ACCEPT); //初始化等待ip ENGINE_COMPONENT_INFO loginsrvinfo = g_SeverConfig.getLoginSrvInfo(); nPort = loginsrvinfo.intport?loginsrvinfo.intport:5500; //连接loginsrv ConnectToServer(g_csock, &g_caddr, _IDM_CLIENTSOCK_MSG, loginsrvinfo.intip.c_str(), dwIP, nPort, FD_CONNECT|FD_READ|FD_CLOSE); HMENU hMainMenu = GetMenu(g_hMainWnd); HMENU hMenu = GetSubMenu(hMainMenu, 0); EnableMenuItem(hMenu, IDM_STARTSERVICE, MF_GRAYED|MF_BYCOMMAND); EnableMenuItem(hMenu, IDM_STOPSERVICE, MF_ENABLED|MF_BYCOMMAND); SendMessage(g_hToolBar, TB_SETSTATE, (WPARAM)IDM_STARTSERVICE, (LPARAM)MAKELONG(TBSTATE_INDETERMINATE, 0)); SendMessage(g_hToolBar, TB_SETSTATE, (WPARAM)IDM_STOPSERVICE, (LPARAM)MAKELONG(TBSTATE_ENABLED, 0)); InsertLogMsg(IDS_STARTSERVICE); SendMessage(g_hStatusBar, SB_SETTEXT, MAKEWORD(0, 0), (LPARAM)_TEXT("Ready")); return; } case IDM_STOPSERVICE: { g_fTerminated = TRUE; /* if (g_hAcceptThread != INVALID_HANDLE_VALUE) { TerminateThread(g_hAcceptThread, 0); WaitForSingleObject(g_hAcceptThread, INFINITE); CloseHandle(g_hAcceptThread); g_hAcceptThread = INVALID_HANDLE_VALUE; } if (g_hMsgThread != INVALID_HANDLE_VALUE) { TerminateThread(g_hMsgThread, 0); WaitForSingleObject(g_hMsgThread, INFINITE); CloseHandle(g_hMsgThread); g_hMsgThread = INVALID_HANDLE_VALUE; } */ ClearSocket(g_ssock); ClearSocket(g_csock); CloseHandle(g_hIOCP); HMENU hMainMenu = GetMenu(g_hMainWnd); HMENU hMenu = GetSubMenu(hMainMenu, 0); EnableMenuItem(hMenu, IDM_STARTSERVICE, MF_ENABLED|MF_BYCOMMAND); EnableMenuItem(hMenu, IDM_STOPSERVICE, MF_GRAYED|MF_BYCOMMAND); SendMessage(g_hToolBar, TB_SETSTATE, (WPARAM)IDM_STARTSERVICE, (LPARAM)MAKELONG(TBSTATE_ENABLED, 0)); SendMessage(g_hToolBar, TB_SETSTATE, (WPARAM)IDM_STOPSERVICE, (LPARAM)MAKELONG(TBSTATE_INDETERMINATE, 0)); InsertLogMsg(IDS_STOPSERVICE); SendMessage(g_hStatusBar, SB_SETTEXT, MAKEWORD(0, 0), (LPARAM)_TEXT("Not Ready")); return; } // ORZ: case IDM_FONTCOLOR: SetFontColor(); return; case IDM_BACKCOLOR: SetBackColor(); return; case IDM_CONFIG: { DialogBox(g_hInst, MAKEINTRESOURCE(IDD_CONFIGDLG), g_hMainWnd, (DLGPROC)ConfigDlgFunc); return; } } }