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


通過映射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();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM