〇、前言
前一章阅读量好少啊~,难道是我鸽太久被限流啦?不至于bia
![](https://img-blog.csdnimg.cn/img_convert/a5293d0b2c83b1d253e55ddb2e53e70d.png)
其中有六七次是我自己看的QAQ
OK,哭诉完毕,回归正题~
一、复习
上一章我们学习了:1、消息处理函数的基本实现
2、消息循环的处理
3、WinMain函数的返回值
4、改BUG(抱歉啦)
按照惯例,附上上一章的代码
#include <Windows.h>
LRESULT __stdcall MsgProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp);
int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
// ...
// 消息循环:
MSG msg;
while (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
LRESULT __stdcall MsgProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
switch (msg)
{
case WM_COMMAND: // 命令消息
// ...
break;
case WM_PAINT: // 渲染消息
// ...
break;
case WM_DESTROY: // 销毁消息
// ...
break;
default:
return DefWindowProc(hWnd, msg, wp, lp);
}
return 0;
}
SEE,单独主窗口一个控件就要在源cpp里塞下这么多代码,以后加一个控件还要再来一遍,估计是个正常人都受不了,何况,作为一个精致的程序员,我的强迫症早就发作了
所以,今天我们来初步地封装一下这个程序
二、窗口类
既然是封装,我们先创建一个类,取个易懂的名字就叫Window吧,VS自带了生成类的功能,当然你也可以在源文件 创一个Window.cpp头文件 创一个Window.h:
![](https://img-blog.csdnimg.cn/img_convert/40481d6ba9260947efe18115e8432872.png)
当然你也可以这样
//.h
#pragma once
class Window
{
// ...
};
//.cpp
#include "Window.h"
我们再看看这个窗口类:
Winc.cbSize = sizeof(Winc);
Winc.cbClsExtra = 0;
Winc.cbWndExtra = 0;
Winc.lpszClassName = "wind2067 is so handsome";
这些完全可以自动生成,而至于:
Winc.hIcon = nullptr;
Winc.hCursor = nullptr;
Winc.hbrBackground = nullptr;
Winc.lpszMenuName = nullptr;
这些我们暂时也用不到啊,所以……全部丢到函数里自动生成
<