〇、前言——
没错,我又回来啦,之前因为学业在小黑屋里关了一个学期,工作日与世隔绝+周末有一点想鸽,就拖了半年
欸~嘿~
好了,废话不多说,上正文:
一、复习——
我们现在学到:1、环境配置(windowsAPI这磨人的小妖精)
2、窗口类
3、创建窗口
没错,就只有这些,先把整合过的代码放一下
int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)
{
// 注册窗口类
WNDCLASSEXA Winc = { NULL };
Winc.cbSize = sizeof(Winc);
Winc.style = CS_OWNDC;
Winc.lpfnWndProc = MessageSetup;
Winc.cbClsExtra = 0;
Winc.cbWndExtra = 0;
Winc.hInstance = hInstance;
Winc.hIcon = nullptr;
Winc.hCursor = nullptr;
Winc.hbrBackground = nullptr;
Winc.lpszMenuName = nullptr;
Winc.lpszClassName = "wind2067 is handsome";
RegisterClassExA(&Winc);
// 创建窗口
HWND hWnd = CreateWindowA(
"wind2067 is handsome",
"Subscribe!!!",
WS_SYSMENU,
CW_USEDEFAULT, CW_USEDEFAULT,
1000, 618, // 只显示标题不大好,我把大小调了一下
nullptr, nullptr,
hInstance,
nullptr
);
// 显示窗口
ShowWindow(hWnd, SW_SHOWDEFAULT);
}
其实上章所说:“就这样,点击编译,你就可以看到一个白白嫩嫩的窗口啦~~~”不大准确,不熟悉流程的各位同学门肯定内心数万只mmp飞过,因为:
Winc.lpfnWndProc = MessageSetup;
↑↑↑
这玩意还没搞定呢,所以~今天我们来讲——消息循环与处理
二、消息处理函数
窗口类需要的消息处理函数框架长这样:
typedef LRESULT (CALLBACK* WNDPROC)(HWND, UINT, WPARAM, LPARAM);
· 翻译
数据类型:LRESLUT(LongRESULT), 追根究底就是long (他们为什么老喜欢搞这种代称???)
额外:CALLBACK,回调(解释太长了,跳转到附注的回调函数),定义为__stdcall(有两根_)
参数-HWND:窗口句柄
-UINT:(Unsigned INT),无符号整型
-WPARAM:(WORD PARAM[参数])WORD型的参数,WORD型即16位整型

本文介绍了C++ Windows窗体程序中消息处理的详细步骤,包括消息处理函数的创建、消息循环、获取和处理消息,以及如何处理窗口类的消息。通过讲解,帮助读者理解窗口消息的工作原理和操作方法。
1453

被折叠的 条评论
为什么被折叠?



