www.pudn.com > LoginGate.rar > LoginGate.cpp
// LoginGate.cpp : Defines the entry point for the application. // #include "stdafx.h" // ************************************************************************************** BOOL InitApplication(HANDLE hInstance); BOOL InitInstance(HANDLE hInstance, int nCmdShow); LPARAM APIENTRY MainWndProc(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam); BOOL jRegSetKey(LPCTSTR pSubKeyName, LPCTSTR pValueName, DWORD dwFlags, LPBYTE pValue, DWORD nValueSize); BOOL jRegGetKey(LPCTSTR pSubKeyName, LPCTSTR pValueName, LPBYTE pValue); BOOL CALLBACK ConfigDlgFunc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); // ************************************************************************************** // // Global Variables Definition // // ************************************************************************************** HINSTANCE g_hInst = NULL; // Application instance HWND g_hMainWnd = NULL; // Main window handle HWND g_hLogMsgWnd = NULL; HWND g_hToolBar = NULL; HWND g_hStatusBar = NULL; static WSADATA g_wsd; //listTUserInfoList; //CUserInfo TUserInfoList[1500]; TBBUTTON tbButtons[] = { { 0, IDM_STARTSERVICE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, { 1, IDM_STOPSERVICE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, { 2, IDM_FONTCOLOR, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, { 3, IDM_BACKCOLOR, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, }; // ************************************************************************************** int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MSG msg; if (CheckAvailableIOCP()) { if (!InitApplication(hInstance)) return (FALSE); if (!InitInstance(hInstance, nCmdShow)) return (FALSE); while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } } else { TCHAR szMsg[1024]; LoadString(hInstance, IDS_NOTWINNT, szMsg, sizeof(szMsg)); MessageBox(NULL, szMsg, _LOGINGATE_SERVER_TITLE, MB_OK|MB_ICONINFORMATION); return -1; } return (msg.wParam); } // ************************************************************************************** // // // // ************************************************************************************** BOOL InitApplication(HANDLE hInstance) { WNDCLASS wc; wc.style = CS_GLOBALCLASS|CS_HREDRAW|CS_VREDRAW; wc.lpfnWndProc = (WNDPROC)MainWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hIcon = LoadIcon((HINSTANCE)hInstance, MAKEINTRESOURCE(IDI_MIR2)); wc.hInstance = (HINSTANCE)hInstance; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wc.lpszMenuName = MAKEINTRESOURCE(IDR_MAINMENU); wc.lpszClassName = _LOGINGATE_SERVER_CLASS; return RegisterClass(&wc); } // ************************************************************************************** // // // // ************************************************************************************** BOOL InitInstance(HANDLE hInstance, int nCmdShow) { g_hInst = (HINSTANCE)hInstance; INITCOMMONCONTROLSEX icex; icex.dwSize = sizeof(INITCOMMONCONTROLSEX); icex.dwICC = ICC_LISTVIEW_CLASSES | ICC_BAR_CLASSES | ICC_INTERNET_CLASSES; InitCommonControlsEx(&icex); g_hMainWnd = CreateWindowEx(0, _LOGINGATE_SERVER_CLASS, _LOGINGATE_SERVER_TITLE, WS_OVERLAPPEDWINDOW|WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, (HINSTANCE)hInstance, NULL); g_hToolBar = CreateToolbarEx(g_hMainWnd, WS_CHILD|CCS_TOP|WS_VISIBLE|WS_BORDER, _IDW_TOOLBAR, sizeof(tbButtons) / sizeof(TBBUTTON), (HINSTANCE)hInstance, IDB_TOOLBAR, (LPCTBBUTTON)&tbButtons, sizeof(tbButtons) / sizeof(TBBUTTON), _BMP_CX, _BMP_CY, _BMP_CX, _BMP_CY, sizeof(TBBUTTON)); RECT rcMainWnd, rcToolBar, rcStatusBar; GetClientRect(g_hMainWnd, &rcMainWnd); GetWindowRect(g_hToolBar, &rcToolBar); g_hStatusBar = CreateWindowEx(0L, STATUSCLASSNAME, _TEXT(""), WS_CHILD|WS_BORDER|WS_VISIBLE|SBS_SIZEGRIP, 0, rcMainWnd.bottom - _STATUS_HEIGHT, (rcMainWnd.right - rcMainWnd.left), _STATUS_HEIGHT, g_hMainWnd, (HMENU)_IDW_STATUSBAR, g_hInst, NULL); int nStatusPartsWidths[_NUMOFMAX_STATUS_PARTS]; int nCnt = 0; for (int i = _NUMOFMAX_STATUS_PARTS - 1; i >= 0; i--) nStatusPartsWidths[nCnt++] = (rcMainWnd.right - rcMainWnd.left) - (90 * i); SendMessage(g_hStatusBar, SB_SETPARTS, _NUMOFMAX_STATUS_PARTS, (LPARAM)nStatusPartsWidths); SendMessage(g_hStatusBar, SB_SETTEXT, MAKEWORD(1, 0), (LPARAM)_TEXT("Not Connected")); GetWindowRect(g_hStatusBar, &rcStatusBar); g_hLogMsgWnd = CreateWindowEx(WS_EX_CLIENTEDGE, WC_LISTVIEW, _TEXT(""), WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT|LVS_EDITLABELS, 0, (rcToolBar.bottom - rcToolBar.top) - 2, (rcMainWnd.right - rcMainWnd.left), (rcMainWnd.bottom - rcMainWnd.top) - (rcToolBar.bottom - rcToolBar.top) - (rcStatusBar.bottom - rcStatusBar.top) + 2, g_hMainWnd, NULL, (HINSTANCE)hInstance, NULL); ListView_SetExtendedListViewStyleEx(g_hLogMsgWnd, 0, LVS_EX_FULLROWSELECT); LV_COLUMN lvc; TCHAR szText[64]; lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; lvc.fmt = LVCFMT_LEFT; lvc.cx = 100; lvc.pszText = szText; for (i = 0; i < 3; i++) { lvc.iSubItem = i; LoadString((HINSTANCE)hInstance, IDS_LVS_LABEL1 + i, szText, sizeof(szText)); ListView_InsertColumn(g_hLogMsgWnd, i, &lvc); } ListView_SetColumnWidth( g_hLogMsgWnd, 2, 500 ); SendMessage(g_hToolBar, TB_SETSTATE, (WPARAM)IDM_STOPSERVICE, (LPARAM)MAKELONG(TBSTATE_INDETERMINATE, 0)); ShowWindow(g_hMainWnd, SW_SHOW); UpdateWindow(g_hMainWnd); if (WSAStartup(MAKEWORD(2, 2), &g_wsd) != 0) return (FALSE); // BYTE btInstalled; if (!jRegGetKey(_LOGINGATE_SERVER_REGISTRY, _TEXT("Installed"), (LPBYTE)&btInstalled)) DialogBox(g_hInst, MAKEINTRESOURCE(IDD_CONFIGDLG), NULL, (DLGPROC)ConfigDlgFunc); InvalidateRect( g_hMainWnd, NULL, TRUE ); return TRUE; } // ************************************************************************************** // // // // ************************************************************************************** int AddNewLogMsg() { LV_ITEM lvi; TCHAR szText[64]; int nCount = ListView_GetItemCount(g_hLogMsgWnd); if (nCount >= 50) { ListView_DeleteItem(g_hLogMsgWnd, 0); nCount--; } lvi.mask = LVIF_TEXT; lvi.iItem = nCount; lvi.iSubItem = 0; _tstrdate(szText); lvi.pszText = szText; ListView_InsertItem(g_hLogMsgWnd, &lvi); _tstrtime(szText); ListView_SetItemText(g_hLogMsgWnd, nCount, 1, szText); return nCount; } void InsertLogMsg(UINT nID) { TCHAR szText[256]; int nCount = AddNewLogMsg(); LoadString(g_hInst, nID, szText, sizeof(szText)); ListView_SetItemText(g_hLogMsgWnd, nCount, 2, szText); ListView_Scroll(g_hLogMsgWnd, 0, 8); } void InsertLogMsg(LPTSTR lpszMsg) { int nCount = AddNewLogMsg(); ListView_SetItemText(g_hLogMsgWnd, nCount, 2, lpszMsg); ListView_Scroll(g_hLogMsgWnd, 0, 8); } /* void InsertLogPacket(char *pszPacket) { LPTGateToSvrHeader lpHdr = (LPTGateToSvrHeader)pszPacket; TCHAR szMsg[256]; _stprintf(szMsg, "%c%c%d%d%d%s", lpHdr->szPrefix, lpHdr->szID, lpHdr->btGateIndex, lpHdr->nSocket, lpHdr->wDataLength, (char *)lpHdr + GTS_HEADER_SIZE); InsertLogMsg(szMsg); } */