标签:
场景: 需要动态更新Static静态文本框的内容来显示不同状态信息
要求:设置文本框背景透明
方法:添加消息ON_WM_CTLCOLOR()
HBRUSH CAppHelperDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何特性 // TODO: 如果默认的不是所需画笔,则返回另一个画笔 //设置标签背景透明 if (pWnd->GetDlgCtrlID() == IDC_Status) { pDC->SetBkMode(TRANSPARENT); //文本背景 pDC->SetTextColor(RGB(60, 160, 60)); //文本颜色 return (HBRUSH)GetStockObject(HOLLOW_BRUSH); //控件背景 } return hbr; }
void CAppHelperDlg::RefreshStatic() { if (((CStatic*)GetDlgItem(IDC_Status))->GetSafeHwnd()) { CStatic* pStatic = (CStatic*)GetDlgItem(IDC_Status); ASSERT(pStatic); CRect rc; pStatic->GetWindowRect(&rc); ScreenToClient(&rc); InvalidateRect(&rc); } }
或者在OnCtlColor()中将字体背景色和控件背景色设置成和父窗口背景色一致也行,但如果该控件的后面为渐变色,则这方法就不好办了。
标签:
原文地址:http://blog.csdn.net/jiangqin115/article/details/45967493