MFC中如何设置控件透明背景色
// 1. 在对话框的头文件中加入
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
// 2. 在对话框的cpp文件中加入
BEGIN_MESSAGE_MAP(CtransparentDlg, CDialog)
ON_WM_CTLCOLOR()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
HBRUSH CtransparentDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hBrush = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(nCtlColor == CTLCOLOR_STATIC)
{
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)::GetStockObject(NULL_BRUSH);
}
return hBrush;
}
很多的做法都是这样的,但为什么我做不到透明的效果。求指点。。
我试了一下,没问题啊
if(nCtlColor == CTLCOLOR_STATIC)
这是对Static控件进行透明处理的
你想透明的是static么?
int nID = pWnd->GetDlgItemID();
if(nID == "你的控件ID")
{
...
}
这样是否能解决?
不是在头文件中加入那些东西,而是重载主窗口对话框的WM_CTLCOLOR消息