你知道手写WIN32窗口需要有多麻烦吗
win32 窗体创建
-
定义入口函数winmain()
-
创建一个窗口
-
设计窗口类 WNDCLASS 赋值 (给成员变量赋值
-
注册窗口类
-
RegisterClass
-
-
显示和更新窗口
-
createWindow
-
-
消息循环
-
getmessage
-
-
窗口过程函数
#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.****.net/postedit/88630838
windows 在线版本https://www.microsoft.com/zh-cn/search/result.aspx?q=&form=MSHOME