首页 > 代码库 > 学MFC之前必须会的金典创建窗口程序的过程代码
学MFC之前必须会的金典创建窗口程序的过程代码
#include <windows.h> // 窗口过程函数 LRESULT CALLBACK MyWndProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_DESTROY: PostQuitMessage (0); return 0; case WM_PAINT: PAINTSTRUCT ps; HDC hDC = BeginPaint (hwnd, &ps); Ellipse (hDC, 100, 100, 400, 400); EndPaint (hwnd, &ps); break; } return DefWindowProc (hwnd, uMsg, wParam, lParam); } // 设置并注册窗口类 ATOM InitApplication (HINSTANCE hInstance) { WNDCLASSEX wcs; wcs.cbSize = sizeof (wcs); wcs.cbWndExtra = 0; wcs.cbClsExtra = 0; wcs.hbrBackground = (HBRUSH)GetStockObject (WHITE_BRUSH); wcs.hCursor = LoadCursor (hInstance , IDC_CROSS); wcs.hIcon = LoadIcon (hInstance, IDI_INFORMATION); wcs.hIconSm = LoadIcon (hInstance, IDI_QUESTION); wcs.hInstance = hInstance; wcs.lpfnWndProc = MyWndProc; wcs.style = CS_VREDRAW | CS_HREDRAW; wcs.lpszMenuName = NULL; wcs.lpszClassName = "WinHello"; return RegisterClassEx (&wcs); } // 创建、显示和更新窗口 BOOL InitInstance (HINSTANCE hInstance, int nCmdShow) { HWND hMainWnd = CreateWindowEx ( 0, "WinHello", "MyWinHello", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); if (! hMainWnd) return FALSE; ShowWindow (hMainWnd, nCmdShow); UpdateWindow (hMainWnd); return TRUE; } // 主函数: 消息循环是重点 int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrecInstance, LPSTR lpCmdLine, int nShowCmd) { if (! InitApplication (hInstance)) return 0; if (! InitInstance (hInstance, nShowCmd)) return 0; MSG msg; while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg); DispatchMessage (&msg); } return msg.wParam; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。