【问题标题】:MFC: How do I change background color in MFC?MFC:如何在 MFC 中更改背景颜色?
【发布时间】:2022-08-17 01:02:05
【问题描述】:

默认情况下,颜色为灰色,我想更改它。我在MainFarm.h 中使用OnEraseBkgnd,这可行,它会更改颜色,但是当代码中的某个位置更远时,mfc 再次将其更改为灰色。

BOOL CMainFrame::OnEraseBkgnd(CDC* pDC)
{
    CBrush backBrush(RGB(0, 0, 0));
    CBrush* pPrevBrush = pDC->SelectObject(&backBrush);
    CRect rect;
    pDC->GetClipBox(&rect);
    pDC->PatBlt(rect.left, rect.top, rect.Width(), rect.Height(),
        PATCOPY);
    pDC->SelectObject(backBrush);
    return TRUE;
}
  • 这是 MDI 应用程序吗?
  • 是的,这是 MDI 应用程序。
  • 将您的画笔添加为该类的成员变量并创建一次。您正在处理程序中创建它,因此当它超出范围时它是无效的。
  • 另外,考虑使用股票对象 - 我确信有一个股票黑色画笔。不需要创建库存对象。
  • 它不起作用,我改变了它,但在代码的某个地方它又变灰了。

标签: c++ mfc


【解决方案1】:

MDI 应用程序不仅有框架窗口和子窗口。它还有一个客户端窗口。客户端窗口处理大部分管理子窗口。

但它也绘制了框架窗口的客户区。这就是在框架窗口中处理OnEraseBkgnd 时绘制背景后绘制灰色背景的原因。

假设你的框架是从CMDIFrameWndEx 派生的,你应该有一个OnEraseMDIClientBackground 虚函数,你可以重写它来做你想要的绘图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多