MFC中创建透明窗口
2018-02-28 17:46
323 查看
第一种 全透明
1.设置窗口透明
2.去除窗口透明
3.实际运行效果
![](https://img-blog.csdn.net/20180228174435342?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTF9BbmR5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20180228174451322?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTF9BbmR5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
第二种 让指定的部分为透明色彩
OnInitialDialog中
在Opaint函数的 else函数中
1.设置窗口透明
//Set WS_EX_LAYERED on this window ::SetWindowLong(GetSafeHwnd(), GWL_EXSTYLE, ::GetWindowLongPtr(GetSafeHwnd(),GWL_EXSTYLE)|WS_EX_LAYERED); //Make this window 70% alpha transparent this->SetLayeredWindowAttributes(0,(255*70)/100,LWA_ALPHA);
2.去除窗口透明
//Remove WS_EX_LAYERED from window style ::SetWindowLong(GetSafeHwnd(), GWL_EXSTYLE, ::GetWindowLongPtr(GetSafeHwnd(),GWL_EXSTYLE)&~WS_EX_LAYERED); //Repaint this->RedrawWindow();
3.实际运行效果
第二种 让指定的部分为透明色彩
OnInitialDialog中
COLORREF maskColor = RGB(255,255,255); SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000); HINSTANCE hInst=LoadLibrary(_T("User32.DLL")); if(hInst) { typedef BOOL (WINAPI * MYFUNC)(HWND , COLORREF,BYTE,DWORD); MYFUNC fun=NULL; fun=(MYFUNC)GetProcAddress(hInst,"SetLayeredWindowAttributes"); if(fun)fun(this->GetSafeHwnd(),maskColor,255,1); FreeLibrary(hInst); }
在Opaint函数的 else函数中
else { CRect rect; CPaintDC dc(this); GetClientRect(rect); dc.FillSolidRect(rect,RGB(255,255,255)); //dc.FillSolidRect(rect,RGB(108,108,108)); CBitmap bmp1,bmp2; //bmp1.LoadBitmap(IDB_B_1); bmp1.LoadBitmap(IDB_BITMAP6); bmp2.LoadBitmap(IDB_BITMAP7); //bmp2.LoadBitmap(IDB_B_2); //CPaintDC dc(this); // device context for painting CDC memDC; memDC.CreateCompatibleDC(&dc); CBitmap* pbmpOld; pbmpOld = memDC.SelectObject(&bmp1); dc.BitBlt(0, 0, 2000, 1500, &memDC, 0, 0, SRCPAINT); // 注意最后一个参数 memDC.SelectObject(&bmp2); dc.BitBlt(0, 0, 2000, 1500, &memDC, 0, 0, SRCAND); // 注意最后一个参数 memDC.SelectObject(pbmpOld); memDC.DeleteDC(); CDialog::OnPaint(); }
相关文章推荐
- WPF&MFC&Opencv透明全屏无边框窗口创建
- VS2013MFC单文档工程学习笔记七 - 创建新的一个窗口并让窗口2透明
- 创建透明窗口及其应用--屏幕画笔
- 利用MFC 在运行中动态创建新窗口
- MFC代码创建窗口
- MFC应用程序中处理消息,创建窗口的过程,关闭窗口(非模态窗口),打开模式对话框等的函数调用顺序 .
- MFC创建窗口(控件)总结
- MFC中创建没有子窗口的MDI应用程序
- MFC创建一个全屏窗口(附源码)
- Win32中窗口的创建和消息机制以及MFC对Win32的封装简介
- MFC创建可停靠与浮动窗口
- MFC学习笔记.day01续-调试MessageBox,注册窗口,创建窗口,显示,更新,消息循环,回调函数
- MFC窗口的创建
- 在Win32 Application 环境下实现MFC窗口的创建
- MFC应用程序消息处理及其窗口创建和销毁过程函数调用顺序
- 用最短的MFC代码创建一个窗口
- 初学MFC (三) 窗口的创建
- [MFC] WS_EX_LAYERED 实现透明异形窗口(酷狗歌词、360加速球、窗口边缘阴影)
- MFC中创建没有子窗口的MDI应用程序
- mfc 新创建的线程如何获得 窗口控件对象