在MFC中使用自定义窗口类

时间:2022-03-31 20:00:31
1、在 CYourApp::InitInstance中注册窗口类
WNDCLASS wc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.hCursor = LoadCursor(IDC_ARROW);
wc.hIcon = NULL;
wc.hInstance = AfxGetInstanceHandle();
wc.lpfnWndProc = ::DefWindowProc; // 注意指定窗口过程
wc.lpszClassName = _T("MyWnd_class"); // 指定窗口类
wc.lpszMenuName = NULL;
wc.style = 0;
AfxRegisterClass(&wc);


2、编写.h文件类的定义
#ifndef MY_WND
#define MY_WND


class CMyWnd : public CWnd
{
public:
    // 构造函数、析构函数等公有接口的声明
protected:
    // 各消息处理函数的声明
    DECLARE_MESSAGE_MAP()
};


#endif

3、编写.cpp文件类的实现
#include "stdafx.h"
#include "MyWnd.h"


// 构造函数、析构函数等函数的实现

BEGIN_MESSAGE_MAP(CMyWnd, CWnd)
    // 各消息分流器
END_MESSAGE_MAP()


// 各消息分流器的实现

4、在主程序代码的适当地方调用 CreateCreateEx创建窗口。