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

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 回答

?
动漫人物

这是一篇带有完整代码示例的文章,介绍如何对应用程序使用自己的自定义“ chrome”:


http://geekswithblogs.net/kobush/articles/CustomBorderForms3.aspx


这看起来有些不错的东西。该系列共有3篇文章,它运行出色,并且在Vista上也能运行!


查看完整回答
反对 回复 2019-11-19
?
守着一只汪

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
?
汪汪一只猫

欧文,我在XP上使用的是Chrome,但在Chrome窗口中没有看到“ Vista Aero”玻璃主题。我看到它是纯蓝色。


如果您要对控件和Windows标题栏进行自定义主题设置,则可以完成。有一个出色的,免费的WinForms UI工具包,可以做到这一点:KryptonToolkit


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

添加回答

回复

举报

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