一、用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

本文介绍如何使用Visual C++实现对话框背景透明效果,并解决了文本内容更新时的闪烁问题。通过调整对话框中静态文本框的背景属性及采用特定函数刷新窗口区域,有效提升了应用程序的用户体验。
1618

被折叠的 条评论
为什么被折叠?



