MST

星途 面试题库

面试题:C++ 中消息映射在 MFC 框架下的基本实现步骤

在 MFC 框架中,简要描述实现消息映射的基本步骤,包括如何声明消息映射入口以及处理函数的定义要求等。
46.4万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 声明消息映射入口
    • 在类的头文件(.h)中,使用 DECLARE_MESSAGE_MAP() 宏。例如,对于一个从 CMyWnd 类(假设从 CWnd 派生),在 CMyWnd.h 中:
    class CMyWnd : public CWnd
    {
    public:
        // 其他成员函数和变量声明
        DECLARE_MESSAGE_MAP()
    };
    
  2. 定义消息映射
    • 在类的源文件(.cpp)中,使用 BEGIN_MESSAGE_MAPEND_MESSAGE_MAP 宏。例如,在 CMyWnd.cpp 中:
    BEGIN_MESSAGE_MAP(CMyWnd, CWnd)
        // 消息映射条目,例如处理 WM_PAINT 消息
        ON_WM_PAINT()
    END_MESSAGE_MAP()
    
  3. 处理函数的定义要求
    • 消息处理函数必须是类的成员函数,通常声明为 protectedpublic
    • 函数的参数和返回值取决于具体的消息。例如,处理 WM_PAINT 消息的函数定义如下:
    void CMyWnd::OnPaint()
    {
        CPaintDC dc(this); // 用于绘制的设备上下文
        // 具体的绘制代码
    }
    
    • 消息处理函数的命名通常遵循一定的规则,一般以 On 开头加上消息名去掉 WM_ 前缀,如 OnLButtonDown 处理 WM_LBUTTONDOWN 消息。