MFC 背景图像加载方法

介绍在 MFC 应用程序中加载背景图像的详细方法,并提供代码示例。

1. 加载位图资源

在 Visual Studio 资源视图中添加位图资源,例如 IDB_BITMAP_BACKGROUND。

2. 处理 WM_CTLCOLOR 消息

在对话框类或视图类中重写 OnCtlColor() 函数,该函数用于处理 WM_CTLCOLOR 消息,允许自定义控件的绘制。

HBRUSH CMyDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    // 判断是否为对话框背景
    if (nCtlColor == CTLCOLOR_DLG) 
    {
        // 加载位图资源
        CBitmap bitmap;
        bitmap.LoadBitmap(IDB_BITMAP_BACKGROUND);

        // 创建图案画刷
        CBrush brush(&bitmap);

        // 选择画刷并保存旧画刷
        hbr = (HBRUSH)pDC->SelectObject(brush);

        // 设置文本颜色为透明
        pDC->SetBkMode(TRANSPARENT); 
    }

    return hbr;
}

3. 调整图像大小

如果需要调整背景图像的大小以适应窗口,可以使用 StretchBlt() 函数。

CRect rect;
GetClientRect(▭);
pDC->StretchBlt(0, 0, rect.Width(), rect.Height(), &dcMem, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY);

注意事项

  • 确保位图资源已正确添加到项目中。
  • 如果背景图像未显示,请检查资源 ID 和代码中的拼写是否正确。
doc 文件大小:185.5KB