在显示一个对话框时,可以在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 }
效果如下:
标签:MFC,对话框,WM,pWnd,tcolor,hbr,闪烁,nCtlColor From: https://www.cnblogs.com/BroccoliFighter/p/17893090.html