2024年4月29日发(作者:)
我也来说说透明静态文本框的实现
Google一下“透明静态文本框”,给出的大多数都是靠如下代码来实现的:
HBRUSH CTransparentLabelDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT n
CtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if (CTLCOLOR_STATIC == nCtlColor)
{
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)GetStockObject(NULL_BRUSH);
}
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
效果如图:
在大多数情况下这种方法都没问题,但是,当需要动态更改静态文本框中的内容时就
会出现这样的问题:
也就是出现了文字重叠现象。
其原因出在“透明”身上。一般情况下在绘制界面时会先绘制对话框的背景然后才会
发布评论