MFC对话框显示时背景闪烁

发布时间 2023-12-10 19:29:04作者: 西兰花战士

在显示一个对话框时,可以在WM_PAINT消息处理函数中绘制窗口的背景色。但会出现一种情况,在还未执行完OnPaint函数,对话框已经先显示出白色窗体,如下:

还未绘制窗体,背景色先被显示。

解决办法:

1、添加WM_CTLCOLOR消息。

2、在消息响应函数中添加如下代码:

 1 HBRUSH CZGDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
 2 {
 3     HBRUSH hbr = __super::OnCtlColor(pDC, pWnd, nCtlColor);
 4     if (nCtlColor == CTLCOLOR_DLG)
 5     {
 6         COLORREF tcolor = RGB(39, 147, 255);
 7         hbr = CreateSolidBrush(tcolor);
 8     }
 9     return hbr;
10 }

效果如下: