轉:http://tobyaa.blog.163.com/blog/static/302485912012523101517699/
通過映射OnCtlColor消息,而後在該函數中使用pDC->SetBkMode(TRANSPARENT)使Static控件背景透明時會出現:文本覆蓋重影的問題,當改變控件的文本就會發生新文本與舊文本重疊的現象。
可以通過以下方式使Static控件文本在透明狀態下改變時不會產生文本重疊問題:
1、由於Static控件的背景已經是透明的了,那麼舊文本應該是畫在Static控件的父窗口上的。
2、在給Static控件設置新文本之後(不是之前!)刷新父窗口即可。例如:
GetDlgItem(IDC_STATIC_TEST)->SetWindowText(_T("北京2008"));?0?2
GetDlgItem(IDC_STATIC_TEST)->GetParent()->RedrawWindow();
IDC_STATIC_TEST爲控件ID號。
3、用上面方法刷新的是整個父窗口客戶區,界面會閃爍,可以只刷Static控件所在的RECT區域,就不會閃爍了。
CRect rtlbl;
GetDlgItem(nID)->GetWindowRect(&rtlbl);
ScreenToClient(&rtlbl); //轉到客戶端界面
InvalidateRect(&rtlbl);//最後刷新對話框背景
UpdateWindow();