LRESULT CALLBACK LoginDlgProc(HWND hWndLoginDlg, UINT Msg, WPARAM wParam, LPARAM lParam) { switch(Msg) { case WM_INITDIALOG: { char* lpStatus = "Waiting for login information..."; SetDlgItemText(hWndLoginDlg, IDC_STATUS, lpStatus); return TRUE; } case SOCKET_EVENT: switch (WSAGETSELECTEVENT(lParam)) { // Differentiate between the events case FD_READ: //Get instance of TOC protocol class //TOC TOC_Class; //TOC_Class.OnReceiveData(); Debug("FD_READ was called!"); break; } break; case WM_COMMAND: switch(wParam) { case IDOK: { int len = GetWindowTextLength(GetDlgItem(hWndLoginDlg, IDC_SCREENNAME)); int len2 = GetWindowTextLength(GetDlgItem(hWndLoginDlg, IDC_PASSWORD)); if (len > 0) { char* snbuf; char* pasbuf; //Get Username from edit box snbuf = (char*)GlobalAlloc(GPTR, len + 1); GetDlgItemText(hWndLoginDlg, IDC_SCREENNAME, snbuf, len + 1); //Get Password from edit box pasbuf = (char*)GlobalAlloc(GPTR, len2 + 1); GetDlgItemText(hWndLoginDlg, IDC_PASSWORD, pasbuf, len2 + 1); //Get instance of TOC protocol class TOC TOC_Class; TOC_Class.Login(hWndLoginDlg, snbuf, pasbuf); GlobalFree((HANDLE)snbuf); GlobalFree((HANDLE)pasbuf); DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_BUDDYLIST), hWndBuddyListDlg, reinterpret_cast(BuddyListDlgProc)); } else { MessageBox(hWndLoginDlg, "Please enter a screen name...", "Error!", MB_OK); } return TRUE; } break; case IDCANCEL: EndDialog(hWndLoginDlg, 0); return TRUE; break; } break; case WM_CLOSE: EndDialog(hWndLoginDlg, 0); break; } return FALSE; }