`
阿尔萨斯
  • 浏览: 4110075 次
社区版块
存档分类
最新评论

透明框架窗口

 
阅读更多
如何让整个窗口具有透明效果呢?
使用如下的类:
// class CLayeredImpl
// Layered Window
template <class T>
class ATL_NO_VTABLE CLayeredImpl
{
public:
HMODULE m_hUser32LWA;
CLayeredImpl()
{
}
virtual ~CLayeredImpl()
{
}
LONG SetLayeredStyle()
{
T* pT = static_cast<T*>(this);
ATLASSERT(::IsWindow(pT->m_hWnd));
LONG lRet = ::GetWindowLong(pT->m_hWnd, GWL_EXSTYLE);
lRet |= WS_EX_LAYERED;
return ::SetWindowLong(pT->m_hWnd, GWL_EXSTYLE, lRet);
}
BOOL SetLayeredAttr(COLORREF crKey, BYTE bAlpha, DWORD dwFlags)
{
T* pT = static_cast<T*>(this);
ATLASSERT(::IsWindow(pT->m_hWnd));
return ::SetLayeredWindowAttributes(pT->m_hWnd, crKey, bAlpha, dwFlags);
}
BOOL UpdateLayered(HDC hDCDst, POINT *pptDst, SIZE *psize,
HDC hDCSrc, POINT *pptSrc, COLORREF crKey, BLENDFUNCTION *pblend,
DWORD dwFlags)
{
T* pT = static_cast<T*>(this);
ATLASSERT(::IsWindow(pT->m_hWnd));
return ::UpdateLayeredWindow(pT->m_hWnd, hDCDst, pptDst, psize,hDCSrc, pptSrc, crKey, pblend, dwFlags);
}
BOOL GetLayeredAttr(COLORREF *pcrKey, BYTE *pbAlpha, DWORD *pdwFlags)
{
T* pT = static_cast<T*>(this);
ATLASSERT(::IsWindow(pT->m_hWnd));
return ::GetLayeredWindowAttributes(pT->m_hWnd, pcrKey, pbAlpha, pdwFlags);
}
};
我们的框架窗口类派生自该类,并且把框架窗口类作为其中的模板参数传递。SetLayeredStyle修改窗口的扩展风格。SetLayeredAttr设置透明规则,具体参数用法可以参见SetLayeredWindowAttributes用法。
在框架窗口的OnCreate函数中调用这两个成员函数即可。请注意,在stdafx.h中设置宏#define _WIN32_WINNT 0x0500
分享到:
评论

相关推荐

    Qt透明无边框窗口的实现示例

    最近在封装一些类的时候,打算做一个窗口框架,能实现拖动、无边框、透明基本样式等功能 0x00 如何透明窗口? 第一步:开启窗口的透明层。 setWindowFlags(Qt::FramelessWindowHint); /* 注意:如果单纯开启窗口...

    透明窗口+方框透视.zip

    方框透视框架,外置EXE 透明窗口绘制方框 ,可供参考 学习 以 Counter-Strike.exe 为例 里边涉及 世界坐标转屏幕坐标,透明窗口 d3d9绘制等

    VC++界面编程之--仿Facebook透明登录窗口

    使用VC++的DUIEngine框架,实现一个仿Facebook的半透明登陆窗口。喜欢DUIEngine的同学可以用来做xml文件配置的参考。

    win32 无边框可移动有透明度frame

    该资源可以实现win32框架下 无标题栏 无菜单 可拖动 有透明度的窗口创建

    WPF制作的窗口启动和关闭时的动画

    能过设置窗口为全透明,并自定义窗口布局,结合Clip和动画来制作窗口在启动时和关闭时的动画效果。本例代码用VS2012编写,基于.NET 4.0框架。

    RoonWeb:Electron Web App将在带有隐藏标题栏的无框架窗口中启动Roon Web Controller

    RoonWeb是一个基于的应用程序,它将Roon Web Controller加载到带有隐藏标题栏的无框架窗口中。 支持半透明并通过附带的AHK脚本保持最上层。 通过专辑封面拖动窗口,并从窗口边缘调整其大小。 双击专辑封面进入全屏...

    通用应用程序框架

    许的啊,如果您想找到原因,原来uPattern中对于合成模式的实现使用的是原始的透明方式…… 一个人的力量太有限了,一个人的才智也太有限了,如果这个小生命在我一个人的手里,也许会因为得不到充足的阳光雨露而不能...

    FEA 中文前端框架 v1.4.0

    FEA 中文前端框架 v1.4.0 更新信息:修复 subnavJustify 窗口适应添加轮播组件修改关闭按钮默认透明度优化面板优化表单输入框,添加密码输入框,文件输入框,下拉框图标增加及更改[icon-win8 改为 icon-win]添加瀑布...

    LHGDialog V3.5.2 正式版 lhgDialog弹出窗口组件 lhgdialog V3.5.2

    此参数只用在框架页面中,如果不写此参数则窗口跨框架弹出在框架最顶层页面,如果值为self则不跨框架,而在当前面页弹出。 s:窗口使用的皮肤的名称(3.5.0修改)参数值:默认default,不写此参数则值为default。如果...

    Layx web开发框架-其他

    特性:纯原生Javascript实现,不依赖任何第三方框架支持IE10+(含IE10)、Chrome、Firefox、Opera、Edge、Safari等主流浏览器支持多种窗口类型:文本窗口,页面窗口,窗口组,提示窗口,消息窗口,询问窗口,输入...

    VISUAL C++实效编程280例

    5.7 实例76:设置框架窗口最大化时的大小和位置 5.8 实例77:保存或恢复框架窗口的状态 5.9 实例78:删除SDI框架窗口中的菜单 5.10 实例79:删除MDI框架窗口中的菜单 5.11 实例80:改变视图的背景颜色 5.12 实例81:...

    SmartSystemMenu:扩展系统中所有窗口的系统菜单-开源

    允许更改当前窗口的透明度。 优先事项。 允许更改当前窗口的程序优先级。 系统托盘。 允许将当前窗口最小化到系统托盘。 要求 操作系统 Windows XP SP3 及更高版本。 支持 x86 和 x64 系统。 .NET 框架 4.0

    一个开源通用的应用程序框架 (待参与)

    ufrmAppBase---------------------------窗口基类 ufrmAppDlgBase------------------------对话框窗口基类 用户、权限与日志管理单元 Role----------------------------------权限与用户管理主要的实现单元 Log--...

    通用应用程序框架(开源)

    没有足够的时间也没有那么多精力去实现所有的模式,于是在这份源代码里,您发现您可以使用一个用户组来登录,本来这是不允许的啊,如果您想找到原因,原来uPattern中对于合成模式的实现使用的是原始的透明方式…… ...

    一个开源通用的应用程序框架2版 (待参与)

    ufrmAppBase---------------------------窗口基类 ufrmAppDlgBase------------------------对话框窗口基类 用户、权限与日志管理单元 Role----------------------------------权限与用户管理主要的实现单元 Log--...

Global site tag (gtag.js) - Google Analytics