窗口使用半透明图片,控件不透明的方法
窗口使用半透明图片,控件不透明的方法
hehe785412 发表于3年前
窗口使用半透明图片,控件不透明的方法
  • 发表于 3年前
  • 阅读 16
  • 收藏 0
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

最近项目软件需要制作半透明窗口,但控件不能透明。窗口和控件都是自绘的。
网上大部分例子都是直接设置窗口透明度实现,这样只能让整个窗口透明,达不到我们想要的效果。
经研究发现,需要使用父子两个窗口配合制作,父窗口不能在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);

转自:

http://www.pailm.com

 

 

共有 人打赏支持
粉丝 0
博文 2
码字总数 0
×
hehe785412
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: