1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
| #include <Windows.h> #include "resource.h"
LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); INT_PTR CALLBACK DlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam);
HINSTANCE hgAppInst; int WINAPI WinMain(HINSTANCE hThisApp, HINSTANCE hPrevApp, LPSTR lpCmd, int nShow) { WNDCLASS wc = {0}; wc.hbrBackground = (HBRUSH)COLOR_WINDOW; wc.lpfnWndProc = (WNDPROC)WindowProc; wc.lpszClassName = L"ClassName"; wc.hInstance = hThisApp; wc.style = CS_HREDRAW | CS_VREDRAW; RegisterClass(&wc); hgAppInst = hThisApp; HWND hwnd = CreateWindow(L"ClassName", L"title", WS_OVERLAPPEDWINDOW, 40, 25, 380, 300, NULL, NULL, hThisApp, NULL); if (!hwnd) return 0; ShowWindow(hwnd, nShow); UpdateWindow(hwnd); MSG msg; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return 0; }
LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_CREATE: { HWND hdlg = CreateDialog(hgAppInst, MAKEINTRESOURCE(IDD_FORMVIEW), hwnd, (DLGPROC)DlgProc); ShowWindow(hdlg, SW_SHOWNA); return 0; } case WM_DESTROY: PostQuitMessage(0); return 0; case WM_SIZE: { RECT rect; SystemParametersInfo(SPI_GETWORKAREA, 0, &rect, 0); HWND hdlg = GetDlgItem(hwnd, IDD_FORMVIEW); MoveWindow(hdlg,0,0, rect.right-rect.left,rect.top-rect.bottom,FALSE); break; } case WM_KEYDOWN: { switch (wParam) { case VK_F1: MessageBoxW(hwnd, L"F1键按下", L"提示", MB_OK); break; case VK_F2: MessageBoxW(hwnd, L"F1键按下", L"提示", MB_OK); break; } return 0; } default: return DefWindowProc(hwnd, msg, wParam, lParam); } return 0; }
INT_PTR CALLBACK DlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_INITDIALOG: return 0; case WM_SYSCOMMAND: if (wParam == SC_CLOSE) { PostQuitMessage(0); } return 0; case WM_COMMAND: switch (wParam) { case IDC_BUTTON1: MessageBox(0, 0, 0, 0); break; } return (INT_PTR)TRUE;
} return (INT_PTR)FALSE; }
|