在 MFC 中,CWnd::OnPaint 是一个受保护的虚拟方法,用于处理窗口的绘制操作。当窗口的内容需要重新绘制时,OnPaint 方法会被调用。在这个方法中,你可以使用设备上下文(device context)进行绘图操作,以更新窗口的外观。

以下是一个简单的示例,演示如何在自定义的窗口类中重写 OnPaint 方法:
class CMyWnd : public CWnd
{
public:
    // 构造函数和其他成员函数的声明

protected:
    // 重写 OnPaint 方法
    afx_msg void OnPaint()
    {
        // 在这里进行绘制操作
        CPaintDC dc(this); // 创建设备上下文

        // 使用设备上下文进行绘制
        // 例如,绘制一个矩形
        CRect rectClient;
        GetClientRect(&rectClient);
        dc.Rectangle(rectClient);
    }

    // 其他成员变量和函数的声明

    DECLARE_MESSAGE_MAP()
};

在这个例子中,CMyWnd 是一个自定义的窗口类,它继承自 CWnd。我们通过 DECLARE_MESSAGE_MAP() 宏声明了消息映射表,在实现文件中需要使用 BEGIN_MESSAGE_MAP 和 END_MESSAGE_MAP 宏进行消息映射的定义。

OnPaint 方法使用 CPaintDC 类创建一个设备上下文,然后可以在这个设备上下文上进行绘制操作。在示例中,使用 Rectangle 方法绘制了一个填充整个客户区域的矩形。

需要注意的是,OnPaint 方法的声明中使用了 afx_msg 宏,而在实现文件中需要添加相应的消息映射宏,以便 MFC 正确处理消息分发。


转载请注明出处:http://www.zyzy.cn/article/detail/23660/MFC/CWnd