一、用VC编写基于对话框的应用程序,用BMP位图作为对话框背景,对话框上的STATIC静态文本框,可以用以下消息函数使文本框的文字背景透明:
HBRUSH CXXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
if( nCtlColor == CTLCOLOR_STATIC)
{
pDC->SetBkMode(TRANSPARENT); //设置背景透明
return HBRUSH(GetStockObject(HOLLOW_BRUSH));
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
二、动态改变控件文本内容时闪烁,可以用以下函数解决这个问题:
void CXXXDlg::OnBtnStatic()
{
// TODO: Add your control notification handler code here
// IDC_STATIC_ST为静态文本控件ID号
CStatic* pSt = (CStatic*)GetDlgItem( IDC_STATIC_ST);
pSt->SetWindowText("北京2008");
RECT rect;
pSt->GetWindowRect(&rect);
ScreenToClient(&rect);
InvalidateRect( &rect,FALSE );
//Invalidate(FALSE); // 整个客户区无效
}