本文主要是介绍MFC对话框设置背景色及透明度,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
首先建立一个基于对话框的MFC应用程序工程testDlg,对话框类是CtestDlgDlg,接下来
一,定义并创建画刷
- // 在CtestDlgDlg类中添加成员变量
- CBrush m_bkBrush;
- // 在OnInitDialog()中创建一把黄色的背景刷子
- m_bkBrush.CreateSolidBrush(RGB(255,255,0));
二,添加WM_CTLCOLOR响应消息函数,点击对话框类CtestDlgDlg属性-->消息响应-->WM_CTLCOLOR-->自动生成代码
- HBRUSH CtestDlgDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
- {
- HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
- if(nCtlColor == CTLCOLOR_DLG) // 判断是否是对话框
- {
- return m_bkBrush; // 返回刚才创建的背景刷子
- }
- //TODO:如果默认的不是所需画笔,则返回另一个画笔
- return hbr;
- }
三,在OnInitDialog()中调用SetLayeredWindowAttributes设置透明度
- ::SetWindowLong( m_hWnd, GWL_EXSTYLE, GetWindowLong(m_hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
- ::SetLayeredWindowAttributes( m_hWnd, 0, 120, LWA_ALPHA); // 120是透明度,范围是0~255
以上代码均用VS2008测试过
这篇关于MFC对话框设置背景色及透明度的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!