我的應用程序有一個啓動對話框,其中包含填充整個對話框的圖像。另外還有一個CStatic控件,它爲用戶顯示一些可變信息。我做了靜態控件控制透明與下面的代碼:如何使CStatic控件(MFC)透明?
HBRUSH CStartbildDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
if(pWnd->GetDlgCtrlID() == IDC_STATIC_INFO)
{
pDC->SetBkMode(TRANSPARENT);
return reinterpret_cast<HBRUSH>(::GetStockObject(NULL_BRUSH));
}
else
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}
當我改變靜態控件的文本與GetDlgItem(IDC_STATIC_INFO)->SetWindowText
,新的文本重疊的舊文本(舊文本不會被刪除)。我試圖重新調用SetWindowText
圖像0的背景,但沒有顯示任何信息文本(既不是舊的也不是新的)。
你知道我怎樣才能使靜態控制透明,以便我也可以用新文本覆蓋它嗎?
感謝您的幫助!
解決方案: 方法2(改編)來自Sanja的codeproject-link爲我工作。
GetDlgItem(IDC_STATIC_INFO)->SetWindowText(tmp);
CRect rect;
GetDlgItem(IDC_STATIC_INFO)->GetWindowRect(&rect);
ScreenToClient(&rect);
InvalidateRect(&rect);
UpdateWindow();
[在WINAPI中執行透明按鈕的正確方法]的可能重複方法2效果很好(http://stackoverflow.com/questions/4595618/correct-way-to-do-transparent-buttons-in-winapi) – 2011-04-06 11:24:49