学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;
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值