首先要添加OnCtlColor函数
1.该函数在VC++中的添加方法为:快捷键Ctrl+W或右击空白处打开ClassWizard对话框(也可以菜单->view->ClassWizard),在Message Maps里的Messages框中找到OnCtlColor,点击Add Function添加
在VS 类视图中右键点击你的DLG类点击属性,在上面找到消息图标,滑动,找到OnCtlColor函数添加
2.第二种方法是自己手动添加
- 头文件中添加函数声明
- cpp文件中添加消息映射和响应函数
// 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;
}
- OnCtlColor可设置的控件类型:
- CTLCOLOR_BTN Button control
- CTLCOLOR_DLG Dialog box
- CTLCOLOR_EDIT Edit control
- CTLCOLOR_LISTBOX List-box control
- CTLCOLOR_MSGBOX Message box
- CTLCOLOR_SCROLLBAR Scroll-bar control
- CTLCOLOR_STATIC Static control