你知道手写WIN32窗口需要有多麻烦吗

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35119182/article/details/88922239

win32 窗体创建

  1. 定义入口函数winmain()

  2. 创建一个窗口

  3. 设计窗口类 WNDCLASS 赋值 (给成员变量赋值

  4. 注册窗口类

    1. RegisterClass

  5. 显示和更新窗口

    1. createWindow

  6. 消息循环

    1. getmessage

  7. 窗口过程函数

 

#include <windows.h>

LRESULT CALLBACK DealMessage(
	HWND hWnd,
	UINT Msg,
	WPARAM wParam,
	LPARAM lParam
	)
{
	switch (Msg)
	{
	case WM_LBUTTONDOWN:
		MessageBox(hWnd, TEXT("abc"), TEXT("鼠标左键按下"), MB_OK);
		break;
	case WM_DESTROY:
		PostQuitMessage(2);
		break;
	default:
		break;
	}

	return DefWindowProc(hWnd, Msg, wParam, lParam);
}

int WINAPI WinMain(HINSTANCE hInstance,  // 应用程序实例
	HINSTANCE hPrevInstance,			 // 上一个应用程序实例
	LPSTR lpCmdLine,					 // 命令行参数 LP long point
	int nCmdShow
	)
{
	WNDCLASS wc;
	wc.cbClsExtra = 0;
	wc.cbWndExtra = 0;
	wc.hInstance = 0;
	wc.hIcon = 0;
	wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); // 背景色
	wc.hCursor = LoadCursor(NULL, IDC_HELP); // 加载系统默认光标
	wc.hIcon = LoadIcon(NULL, IDI_WARNING); // 加载系统默认图标

	wc.hInstance = hInstance;  // 应用程序实例
	wc.lpfnWndProc = DealMessage;

	wc.lpszClassName = TEXT("ABC"); // 类名字
	wc.lpszMenuName = NULL;
	wc.style = nCmdShow; // 显示风格

	// 注册窗口类
	RegisterClass(&wc);

	// 创建窗口类
	HWND hWnd = CreateWindow(TEXT("ABC"), TEXT("hello,windows"), WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
		NULL, NULL, hInstance, NULL);

	// 显示窗口
	ShowWindow(hWnd, nCmdShow);
	UpdateWindow(hWnd);

	// 消息循环
	MSG msg;
	while (GetMessage(&msg, NULL, 0, 0))
	{
		// 翻译工作 
		// 虚拟按键转标准字符
		TranslateMessage(&msg);
		// 给操作系统分发消息
		DispatchMessage(&msg);
	}  
	return msg.wParam;
}

MSDN

离线版本msdn :  https://mp.csdn.net/postedit/88630838

windows 在线版本https://www.microsoft.com/zh-cn/search/result.aspx?q=&form=MSHOME

猜你喜欢

转载自blog.csdn.net/qq_35119182/article/details/88922239