您的位置:首页 > 其它

如何使STATIC控件的背景透明以及动态改变控件文本内容时闪烁的问题

2008-04-01 16:41 661 查看
一、用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); // 整个客户区无效
}

更多技术文章请参看施昌权的个人网站: http://www.joyvc.cn
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐