在 MFC 的 CDialogEx 类中,没有直接提供 SetBackgroundImage 这样的公共方法。然而,你可以通过处理 WM_ERASEBKGND 消息来自定义对话框的背景图像。

以下是一个简单的示例,演示如何使用 SetBackgroundImage 函数设置对话框的背景图像:
// 头文件中声明消息处理函数
afx_msg BOOL OnEraseBkgnd(CDC* pDC);

// 实现消息映射
BEGIN_MESSAGE_MAP(MyDialog, CDialogEx)
    ON_WM_ERASEBKGND()
END_MESSAGE_MAP()

// 实现消息处理函数
BOOL MyDialog::OnEraseBkgnd(CDC* pDC)
{
    // 加载背景图像
    CBitmap backgroundBitmap;
    backgroundBitmap.LoadBitmap(IDB_BACKGROUND);  // IDB_BACKGROUND 是背景图像的资源ID

    // 创建画刷
    CBrush brush(&backgroundBitmap);

    // 获取对话框的客户区域
    CRect rect;
    GetClientRect(rect);

    // 绘制背景图像
    pDC->FillRect(rect, &brush);

    return TRUE; // 告诉系统我们已经处理了擦除背景的任务
}

在这个例子中,OnEraseBkgnd 函数处理 WM_ERASEBKGND 消息,加载背景图像,并使用 FillRect 函数将背景图像绘制到对话框的客户区域中。你需要在资源中添加一个背景图像(例如位图),并使用对应的资源ID替换 IDB_BACKGROUND。这样,你就可以通过 SetBackgroundImage 函数来设置对话框的背景图像了。


转载请注明出处:http://www.pingtaimeng.com/article/detail/17346/MFC/CDialogEx