LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { static HWND hwndEdit ; int iSelect, iEnable ; switch (message) { case WM_CREATE: hwndEdit = CreateWindow (TEXT ("edit"), NULL, WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | WS_BORDER | ES_LEFT | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL, 0, 0, 0, 0, hwnd, (HMENU) ID_EDIT, ((LPCREATESTRUCT) lParam)->hInstance, NULL) ; return 0 ; case WM_SETFOCUS: SetFocus (hwndEdit) ; return 0 ; case WM_SIZE: MoveWindow (hwndEdit, 0, 0, LOWORD (lParam), HIWORD (lParam), TRUE) ; return 0 ; case WM_INITMENUPOPUP: if (lParam == 1) { EnableMenuItem ((HMENU) wParam, IDM_EDIT_UNDO, SendMessage (hwndEdit, EM_CANUNDO, 0, 0) ? MF_ENABLED : MF_GRAYED) ; EnableMenuItem ((HMENU) wParam, IDM_EDIT_PASTE, IsClipboardFormatAvailable (CF_TEXT) ? MF_ENABLED : MF_GRAYED) ; iSelect = SendMessage (hwndEdit, EM_GETSEL, 0, 0) ; if (HIWORD (iSelect) == LOWORD (iSelect)) iEnable = MF_GRAYED ; else iEnable = MF_ENABLED ; EnableMenuItem ((HMENU) wParam, IDM_EDIT_CUT, iEnable) ; EnableMenuItem ((HMENU) wParam, IDM_EDIT_COPY, iEnable) ; EnableMenuItem ((HMENU) wParam, IDM_EDIT_CLEAR, iEnable) ; return 0 ; } break ; case WM_COMMAND: if (lParam) { if (LOWORD (lParam) == ID_EDIT && (HIWORD (wParam) == EN_ERRSPACE || HIWORD (wParam) == EN_MAXTEXT)) MessageBox (hwnd, TEXT ("Edit control out of space."), szAppName, MB_OK | MB_ICONSTOP) ; return 0 ; } else switch (LOWORD (wParam)) { case IDM_FILE_NEW: case IDM_FILE_OPEN: case IDM_FILE_SAVE: case IDM_FILE_SAVE_AS: case IDM_FILE_PRINT: MessageBeep (0) ; return 0 ; case IDM_APP_EXIT: SendMessage (hwnd, WM_CLOSE, 0, 0) ; return 0 ; case IDM_EDIT_UNDO: SendMessage (hwndEdit, WM_UNDO, 0, 0) ; return 0 ; case IDM_EDIT_CUT: SendMessage (hwndEdit, WM_CUT, 0, 0) ; return 0 ; case IDM_EDIT_COPY: SendMessage (hwndEdit, WM_COPY, 0, 0) ; return 0 ; case IDM_EDIT_PASTE: SendMessage (hwndEdit, WM_PASTE, 0, 0) ; return 0 ; case IDM_EDIT_CLEAR: SendMessage (hwndEdit, WM_CLEAR, 0, 0) ; return 0 ; case IDM_EDIT_SELECT_ALL: SendMessage (hwndEdit, EM_SETSEL, 0, -1) ; return 0 ; case IDM_HELP_HELP: MessageBox (hwnd, TEXT ("Help not yet implemented!"), szAppName, MB_OK | MB_ICONEXCLAMATION) ; return 0 ; case IDM_APP_ABOUT: MessageBox (hwnd, TEXT ("POPPAD2 (c) Charles Petzold, 1998"), szAppName, MB_OK | MB_ICONINFORMATION) ; return 0 ; } break ; case WM_CLOSE: if (IDYES == AskConfirmation (hwnd)) DestroyWindow (hwnd) ; return 0 ; case WM_QUERYENDSESSION: if (IDYES == AskConfirmation (hwnd)) return 1 ; else return 0 ; case WM_DESTROY: PostQuitMessage (0) ; return 0 ; } return DefWindowProc (hwnd, message, wParam, lParam) ; }
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { static TCHAR szAppName[] = TEXT("SampleSRS"); static int xBlock, yBlock; static HINSTANCE hInstance; static RECT rect_time1, rect_time2, rect_bk; static HBRUSH hBrushRed; SetRect(&rect_time1, PLAYER1_TIME_X1 - 10, PLAYER1_TIME_Y1 - 10, PLAYER1_TIME_X2, PLAYER1_TIME_Y2); SetRect(&rect_time2, PLAYER2_TIME_X1, PLAYER2_TIME_Y1 - 10, PLAYER2_TIME_X2 + 10, PLAYER2_TIME_Y2 - 10); SetRect(&rect_bk, 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT); switch(msg) { case WM_CREATE: hInstance = ((LPCREATESTRUCT)lParam)->hInstance; DrawUI(hwnd, &lParam, hInstance); /* Load Image (Background && Chessboard) */ LoadRc(hInstance); hBrushRed = CreateSolidBrush(RGB(255, 0, 0)); MessageBox(hwnd, "Load Resource Successfully", "Info", MB_OK); break; case WM_SIZE: xBlock = (BOARD_X2 - BOARD_X1) / 3; yBlock = (BOARD_Y2 - BOARD_Y1) / 3; break; case WM_PAINT: InitRc(hwnd); break; case WM_LBUTTONDOWN: /* */ break; case WM_TIMER: if (is_pause == FALSE) { if (n_chess & 1) { InvalidateRect(hwnd, &rect_time2, TRUE); DrawTime(hwnd, hBrushRed); } else { InvalidateRect(hwnd, &rect_time1, TRUE); DrawTime(hwnd, hBrushRed); } } break; case WM_COMMAND: log_to_text("Button Pressed: %d\n", LOWORD(wParam)); if (LOWORD(wParam) == BTN_PLAYER1_RECORD) { /* Speech Recogniton for player 1*/ player1_or_player2 = PLAYER1; ControlRecord(hwnd, hInstance, PLAYER1); } else if (LOWORD(wParam) == BTN_PLAYER2_RECORD) { /* Speech Recogniton for player 2*/ player1_or_player2 = PLAYER2; ControlRecord(hwnd, hInstance, PLAYER2); } else if (LOWORD(wParam) == BTN_RESET) { /* Reset Button */ InitGame(hwnd); } else if (LOWORD(wParam) == BTN_PAUSE) { /* Pause Button */ if (is_pause) { SetWindowText(GetDlgItem(hwnd, BTN_PAUSE), S_PAUSE); } else { SetWindowText(GetDlgItem(hwnd, BTN_PAUSE), S_CONTINUE); } is_pause = !is_pause; } else if (LOWORD(wParam) == BTN_REDO) { /* Redo Button */ back(hwnd, hInstance); GameCon(); } else if (LOWORD(wParam) == BTN_EXIT) { /* Exit Button */ if (IDYES == AskConfirmation(hwnd)) { DestroyWindow(hwnd) ; } } break; case WM_DESTROY: KillTimer(hwnd, ID1_TIMER); KillTimer(hwnd, ID2_TIMER); DeleteObject(hBkBitmap); DeleteObject(hBdBitmap); PostQuitMessage(0); break; } return DefWindowProc(hwnd, msg, wParam, lParam); }