MFC解決Static控件背景透明時文本覆蓋重影

轉: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();

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章