我做了一个基于对话框的程序,用了一幅BMP图作为窗体的背景,上面放置了几个STATIC静态文本框,我用了以下办法使文本框的文字背景透明,也确实做到了这一点HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(nCtlColor == CTLCOLOR_STATIC)
{
pDC->SetBkMode(TRANSPARENT); //设置背景透明
return HBRUSH(GetStockObject(HOLLOW_BRUSH));
}
return hbr;
}可是,当我试图改变文本内容时,却发现前后的内容重叠在一起了,如何解决呢?
另外我发现如果发生内容重叠后,将窗体最小化,再还原,文本就自动正常显示了,
请问高手这是怎么回事儿?对我的问题解决有无可以借鉴的地方?急盼回答,切切!!!!!!!!谢过了先!
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(nCtlColor == CTLCOLOR_STATIC)
{
pDC->SetBkMode(TRANSPARENT); //设置背景透明
return HBRUSH(GetStockObject(HOLLOW_BRUSH));
}
return hbr;
}可是,当我试图改变文本内容时,却发现前后的内容重叠在一起了,如何解决呢?
另外我发现如果发生内容重叠后,将窗体最小化,再还原,文本就自动正常显示了,
请问高手这是怎么回事儿?对我的问题解决有无可以借鉴的地方?急盼回答,切切!!!!!!!!谢过了先!
void CStaticBMPDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CStatic* pSt = (CStatic*)GetDlgItem( IDC_STATIC_ST);
pSt->SetWindowText( ";adjfl;afl;a");
RECT rect;
pSt->GetWindowRect(&rect);
ScreenToClient(&rect);
InvalidateRect( &rect,FALSE );
//Invalidate(FALSE);
}