winapi – Win32:如何使阴影荣誉非矩形分层窗口?
我通过添加
WS_EX_LAYERED扩展样式创建了一个
layered window:
wndClass.ExStyle = wndClass.ExStyle | WS_EX_LAYERED; Windows将使用黑色作为色度键颜色值。我要离开一个黑色的大边框,使问题显而易见: alt text http://i45.tinypic.com/2qs002q.jpg 窗口建成后,我告诉use black as a chroma-key color: SetLayeredWindowAttributes(hwnd,0x00000000,255,LWA_COLORKEY); 现在弹出的分层窗口显示为部分透明: alt text http://i48.tinypic.com/2cfta3o.jpg 问题是最后一步。我想使用CS_DROPSHADOW类风格,从Windows XP开始,可以创建一个阴影: wndClass.Style = wndClass.Style | CS_DROPSHADOW; 阴影出现,但阴影围绕原始的矩形窗口,并不考虑分层窗口提供的窗口的透明度: http://i49.tinypic.com/23lnnu9.jpg 有没有人知道我会错过什么神奇的选择,将使阴影荣耀非矩形分层窗口? 出现这个问题的另一个例子是当你不包括6px padding / margin。 Windows?主题绘制的提示窗口是非矩形的。这留下了一个小的可见的间隙,窗口是透明的,但是阴影没有出现: alt text http://i47.tinypic.com/30arsxk.png Microsoft已经设法使其工作,从Internet Explorer的这个提示可以看出: alt text http://i46.tinypic.com/f104cj.jpg 看一下Windows工具提示类提示窗口。使用SpyXX – 我可以得到它的窗口和类样式: http://i49.tinypic.com/f4pued.jpg SpyXX说: Rectangle: (440,229)-(544,249),104x20 Restored Rect: (440,104x20 Client Rect: (0,0)-(104,20),104x20 所以一切都指向窗口本身就是104×20像素,窗外本身就有阴影。 (与CS_DROPSHADOW一致) 接下来我可以看一下工具提示窗口类的样式: Windows Styles: 94000001 WS_POPUP 80000000 WS_VISIBLE 10000000 WS_CLIPSIBLINGS 4000000 TTS_ALWAYSTIP 1 Extended Styles: 00080088 WS_EX_LAYERED 80000 WS_EX_TOOLWIN 80 WS_EX_TOPMOST 8 有趣的是,它不使用 也不使用CS_DROPSHADOW(0x20000)。所以现在我想知道如何画出自己的窗口? 注意:透明分层窗口被记录为区域的首选技术。 编辑:Windows 2000中已分层Windows。CS_DropShadow已添加到XP。
不过CS_DROPSHADOW确实注意地区。如果您使用区域裁剪或以其他方式塑造您的窗口,则阴影将遵循新轮廓。 幸运的是,您可以使用具有分层窗口的区域,并通过组合二者获得您要查找的效果。 BTW:tooltips_class32确实使用CS_DROPSHADOW – 您不会在窗口样式中看到它,因为它是一个类样式,而不是窗口样式。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows-authentication – 使用TransportWithMessageCrede
- 应用程序无法正常启动0xc000007b解决方法
- Windows Phone 8 – 无法在Windows Phone 8上安装公司应用程
- Windows PowerShell选择删除列
- 如何动态加载AttachProvider(attach.dll)
- Windows服务的替代方案
- 1.19 使用XCActionController创建Twitter/Youtube/Skype/Sp
- Windows 多线程编程入门(2)
- 关于celery在windows下运行报错提示找不到模块的问题
- 我可以在Windows中开发.NET应用程序并为Linux和Mac部署版本
- winapi – 在调用LoadLibrary()时默默捕获Window
- windows10环境下装ubuntu双系统,装显卡驱动,配
- active-directory – 远程桌面连接被拒绝,因为用
- hyper-v-server-2008-r2 – 使用Windows 10管理W
- windows eclipse直接访问远程linux hadoop开发环
- 哪里可以在Windows Azure中找到我的Ocp-Apim-Sub
- 如何从Windows客户端打开SSH隧道作为后台程序?
- windows-phone-7 – wp7 – 带有大量文本的TextB
- windows-server-2003 – Windows文件共享上每个文
- .net – 没有Windows Media Player 10的WPF中的媒