码迷,mamicode.com
首页 > 其他好文 > 详细

窗口使用半透明图片,控件不透明的方法

时间:2015-02-12 01:53:37      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:

最近项目软件需要制作半透明窗口,但控件不能透明。窗口和控件都是自绘的。
网上大部分例子都是直接设置窗口透明度实现,这样只能让整个窗口透明,达不到我们想要的效果。
经研究发现,需要使用父子两个窗口配合制作,父窗口不能在OnPaint那里自绘,
而是直接GetDC得到句柄自绘背景,子窗口负责自绘控件。

 

关键代码:
父窗口

OnInitDialog()
{
m_dlg.Create(m_hWnd);
        m_dlg.ShowWindow(SW_SHOW);
        m_dlg.MoveWindow(&rct);
         
        HDC hDC =::GetDC(m_hWnd);
        BLENDFUNCTION blend;
        blend.BlendOp=0; //theonlyBlendOpdefinedinWindows2000
        blend.BlendFlags=0; //nothingelseisspecial...
        blend.AlphaFormat=1; //...
        blend.SourceConstantAlpha=255;//AC_SRC_ALPHA
        DWORD dwExStyle=::GetWindowLong(m_hWnd,GWL_EXSTYLE);
        ::SetWindowLong(m_hWnd,GWL_EXSTYLE,dwExStyle^0x80000);
        HDC hMemDc;
        hMemDc=CreateCompatibleDC(hDC);
        HBITMAP hBitMap=CreateCompatibleBitmap(hDC,500,500);
        SelectObject(hMemDc,hBitMap);

}

 转自: www.pailm.com

窗口使用半透明图片,控件不透明的方法

标签:

原文地址:http://www.cnblogs.com/haha457/p/4287230.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!