您的位置:首页 > 其它

MFC对话框设置背景色及透明度

2013-12-04 20:39 309 查看
首先建立一个基于对话框的MFC应用程序工程testDlg,对话框类是CtestDlgDlg,接下来

一,定义并创建画刷

[cpp] view
plaincopy

// 在CtestDlgDlg类中添加成员变量  

CBrush m_bkBrush;  

// 在OnInitDialog()中创建一把黄色的背景刷子   

m_bkBrush.CreateSolidBrush(RGB(255,255,0));          

 

二,添加WM_CTLCOLOR响应消息函数,点击对话框类CtestDlgDlg属性-->消息响应-->WM_CTLCOLOR-->自动生成代码

[cpp] view
plaincopy

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设置透明度

[cpp] view
plaincopy

::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