航空玻璃窗上的非客户端绘画

时间:2011-04-12 11:52:54

标签: c# c++ user-interface aero nonclient

现在我定制了我的应用程序的标题栏。我的目标是在标题栏上添加一个额外的按钮。我的previous question人已经告诉我我可以自定义非客户区的方式。这是完美的,除了一件小事 - 发光!我可以在非客户区域画画,但是我无法将其展开窗外。我也找不到关于这个subj的任何资源。

我查看了this样本并制作了自己的测试应用程序,用于调查非客户端绘图工具。我的应用程序窗口的屏幕截图:

my app's window

所以你可以看到,当我被边框框剪裁时,系统按钮会从窗户中闪烁。

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

Skype's window

有人可以建议我找出把窗户上的按钮发光的方法吗? 提前谢谢!

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

3 个答案:

答案 0 :(得分:11)

Skype欺骗了它,窗户顶部有一条小条;他们可以在哪里画画。

您可以使用Process Explorer查看SpyXX:

enter image description here

另见

MSDN:Custom Window Frame Using DWM

答案 1 :(得分:5)

我认为不可能超越你的NC领域,我有点怀疑他们正在绘制整个UI以与DWM Aero效果完全匹配。

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

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

跟进 - 我认为这个自定义chrome线程有更多指向相同技术的指针(虽然目标不同):Custom titlebars/chrome in a WinForms app

答案 2 :(得分:3)

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

Skype屏幕截图来自自定义绘制的框架,很可能超出可见边框,不是来自Aero Glass框架。如果仔细观察,你可以区分出来。