关闭

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

标签: mfc
650人阅读 评论(0) 收藏 举报
分类:
首先建立一个基于对话框的MFC应用程序工程testDlg,对话框类是CtestDlgDlg,接下来
一,定义并创建画刷
  1. // 在CtestDlgDlg类中添加成员变量  
  2. CBrush m_bkBrush;  
  3. // 在OnInitDialog()中创建一把黄色的背景刷子   
  4. m_bkBrush.CreateSolidBrush(RGB(255,255,0));          
 
二,添加WM_CTLCOLOR响应消息函数,点击对话框类CtestDlgDlg属性-->消息响应-->WM_CTLCOLOR-->自动生成代码
  1. HBRUSH CtestDlgDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)  
  2. {  
  3.     HBRUSH   hbr   =   CDialog::OnCtlColor(pDC,   pWnd,   nCtlColor);    
  4.     if(nCtlColor == CTLCOLOR_DLG)   // 判断是否是对话框  
  5.     {  
  6.         return   m_bkBrush; // 返回刚才创建的背景刷子  
  7.     }  
  8.     //TODO:如果默认的不是所需画笔,则返回另一个画笔  
  9.     return   hbr;  
  10. }  
 
三,在OnInitDialog()中调用SetLayeredWindowAttributes设置透明度
  1. ::SetWindowLong( m_hWnd, GWL_EXSTYLE, GetWindowLong(m_hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);  
  2. ::SetLayeredWindowAttributes( m_hWnd, 0, 120, LWA_ALPHA); // 120是透明度,范围是0~255  
 
以上代码均用VS2008测试过

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:162722次
    • 积分:3457
    • 等级:
    • 排名:第10121名
    • 原创:177篇
    • 转载:24篇
    • 译文:2篇
    • 评论:19条
    文章分类
    最新评论