为了账号安全,请及时绑定邮箱和手机立即绑定

WinForms应用程序中的自定义标题栏/ chrome

WinForms应用程序中的自定义标题栏/ chrome

慕斯王 2019-11-19 14:47:45
我几乎可以肯定我知道这个问题的答案,但是我希望有一些我忽略的事情。即使在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主题,否则这就是问题的答案,但是我显然不能将自己的帖子标记为答案。


查看完整回答
反对 回复 2019-11-19
  • 3 回答
  • 0 关注
  • 601 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信