#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;
}
学MFC之前必须会的金典创建窗口程序的过程代码
最新推荐文章于 2017-06-29 15:46:08 发布