MFC解決Static控件背景透明時文本覆蓋重影
睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接
通過映射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();RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
可以通過以下方式使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();RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成