38

现在我正在自定义我的应用程序的标题栏。我的目标是在标题栏上添加一个额外的按钮。我之前的问题 有人建议我自定义非客户区的方式。除了一件小事——发光!我可以在非客户区绘制发光,但不能让它扩散到窗外。我也找不到关于这个主题的任何资源。

我查看了这个示例并制作了自己的测试应用程序来调查非客户绘图设施。我的应用程序窗口的屏幕截图:

我的应用程序窗口

因此,您可以看到当 my 被边框剪裁时,系统按钮会从窗口中发光。

例如,Skype 的窗口在标题栏中有四个自定义按钮,它们可以“发光”出窗口框架:

Skype的窗口

任何人都可以建议我找出将按钮从窗外发光的方法吗?
提前致谢!

[编辑]
谢谢大家的回答!

4

3 回答 3

13

Skype 欺骗了它,并且在他们的窗口顶部有一个小条子;他们可以在哪里画。

您可以使用 Process Explorer to SpyXX 看到它:

在此处输入图像描述

也可以看看

MSDN:使用 DWM 的自定义窗口框架

于 2011-04-21T03:44:26.600 回答
5

我认为不可能在您的 NC 区域之外进行绘制,而且我有点怀疑他们正在绘制整个 UI 以完全匹配 DWM Aero 效果。

鉴于这看起来如何,我想知道他们是否使用 CustomBorderForm 的帮助或恢复按钮做了一些技巧,然后可以“免费”获得 DWM 模糊高亮效果。

这是我能找到的最相关的文章:http: //geekswithblogs.net/kobush/articles/CustomBorderForms3.aspx

跟进 - 我认为这个自定义 chrome 线程有更多指向相同技术的指针(尽管目标不同):WinForms 应用程序中的自定义标题栏/铬

于 2011-04-14T19:39:07.750 回答
3

AFAIK,这是不可能的,因为窗口边框之外的区域根本不属于您

Skype 屏幕截图来自一个自定义绘制的框架,该框架很可能超出了可见边界,而不是来自 Aero Glass 框架。如果您仔细观察,您可以分辨出区别。

于 2011-04-21T02:57:41.007 回答