VS2012使对话框透明和改变对话框背景颜色或图片背景

在Dlg头文件中public加入:

 CBrush m_bkBrush;  
 
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);


// 在OnInitDialog()

创建一把黄色的背景刷子   
m_bkBrush.CreateSolidBrush(RGB(255,180,100)); 

设置对话框透明度
::SetWindowLong( m_hWnd, GWL_EXSTYLE, GetWindowLong(m_hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);  
::SetLayeredWindowAttributes( m_hWnd, 0, 200, LWA_ALPHA); // 120是透明度,范围是0~255  


编辑OnCtlColor函数

HBRUSH C改变对话框背景色、透明度Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
if(nCtlColor == CTLCOLOR_DLG)   // 判断是否是对话框  
{  
return   m_bkBrush; // 返回刚才创建的背景刷子  
}  
// TODO:  如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}


若要添加背景,在onpaint函数中的else中

添加位图的方法在上篇博文中有提到

//CDialogEx::OnPaint();//添加背景时注释掉
//添加背景
CPaintDC   dc(this);   
      CRect   rect;   
     GetClientRect(&rect);   
       CDC   dcMem;   
      dcMem.CreateCompatibleDC(&dc);   
      CBitmap   bmpBackground;   
      bmpBackground.LoadBitmap(IDB_BITMAP1);   
            // IDB_BITMAP1是你自己的图对应的ID   
      BITMAP   bitmap;   
      bmpBackground.GetBitmap(&bitmap);   
      CBitmap   *pbmpOld=dcMem.SelectObject(&bmpBackground);   
      dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,   
    bitmap.bmWidth,bitmap.bmHeight,SRCCOPY); 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值