读书人

关于VC对话框静态文本设置背景透明的有

发布时间: 2014-06-27 17:31:48 作者: rapoo

关于VC对话框静态文本设置背景透明的问题
关于VC对话框静态文本设置背景透明的问题

静态文本设置字体可以
但是设置背景透明显示不可以

我在对话框前面又加了一个窗体,用于在这个窗体上显示视频,并将其设置到Z轴最下面
这样,静态文本是在窗体上面,并如下设置

C/C++ code
HBRUSH CTransstaDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);// TODO: Change any attributes of the DC hereif(nCtlColor == CTLCOLOR_STATIC){pDC->SetTextColor(RGB(255, 0, 0));pDC->SetBkMode(TRANSPARENT);}// TODO: Return a different brush if the default is not desiredreturn hbr;}


但是静态文本背景并不是透明的,这是为什么啊?
代码:http://download.csdn.net/detail/yanhc519/4523989

谢谢了!

[解决办法]
用MFC ClassWizard添加WM_CTLCOLOR消息:
HBRUSH CSerialTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)

{

HBRUSH hbr= CDialog::OnCtlColor(pDC, pWnd, nCtlColor);



// TODO: Change any attributes of the DC here



// TODO: Return a different brush if the default is not desired

switch(nCtlColor)

{

case CTLCOLOR_STATIC: //对所有静态文本控件的设置

{

pDC->SetBkMode(TRANSPARENT);//设置背景为透明

pDC->SetTextColor(RGB(0,0,0)); //设置字体颜色

return HBRUSH(GetStockObject(HOLLOW_BRUSH)); // 必须

}

case CTLCOLOR_DLG: //对所有静态文本控件的设置

{

pDC->SetBkMode(TRANSPARENT);

return hbr; //返回画刷句柄

}

default:

return CDialog::OnCtlColor(pDC,pWnd, nCtlColor);

}

return hbr;

}

读书人网 >VC/MFC

热点推荐