我几乎可以肯定我知道这个问题的答案,但是我希望有一些我忽略的事情。即使在Windows XP上运行,某些应用程序的标题栏和按钮似乎也具有Vista Aero的外观。(以Google Chrome和Windows Live Photo Gallery为例。)我知道从WinForms实现此目的的一种方法是创建一个无边界表单并自己绘制标题栏/按钮,然后进行覆盖WndProc以确保移动,调整大小,和按钮单击可以完成他们应该做的事情(我不清楚具体细节,但可能有一天可以阅读文档。)我很好奇是否有一种更容易忽略的方法。也许我忽略了一些API调用或窗口样式?我相信Google已通过在Chrome中使用“自行滚动窗口”方法为我解决了这一问题。万一有人有新信息,我将把问题再开放一天,但我相信我自己已经回答了这个问题。
3 回答
守着一只汪
TA贡献1872条经验 获得超3个赞
Google Chrome 并未使用Vista SDK在XP上实现此目标。如果您src\chrome\browser\views\frame浏览一下,则可以根据系统功能定义几个文件来定义浏览器框架。在XP上,看起来像是OpaqueFrame在使用;第19行这样说:
// OpaqueFrame
//
// OpaqueFrame is a CustomFrameWindow subclass that in conjunction with
// OpaqueNonClientView provides the window frame on Windows XP and on Windows
// Vista when DWM desktop compositing is disabled. The window title and
// borders are provided with bitmaps.
看起来好像是在使用资源src\chrome\app\theme来绘制框架按钮。
因此,我希望以某种廉价的方式在XP上启用Vista主题的希望破灭了。唯一的方法是手动绘制窗口的非客户区域。我相信类似的方法可能是正确的选择,因为它可以让Windows处理非客户端内容,例如移动和调整窗口大小。
除非有人能找到一种方法神奇地启用XP上的Vista主题,否则这就是问题的答案,但是我显然不能将自己的帖子标记为答案。
- 3 回答
- 0 关注
- 601 浏览
添加回答
举报
0/150
提交
取消