Owe*_*enP 12 .net user-interface windows-xp winforms
我几乎可以肯定我知道这个问题的答案,但我希望有一些我忽略的东西.
某些应用程序似乎在其标题栏和按钮上具有Vista Aero外观和感觉,即使在Windows XP上运行也是如此.(谷歌浏览器和Windows Live照片库作为例子浮现在脑海中.)我知道从WinForms实现这一目标的一种方法是创建一个无边框表单并自己绘制标题栏/按钮,然后重写WndProc以确保移动,调整大小,和按钮点击做了他们应该做的事情(我不清楚具体细节,但可能会花一天时间阅读文档.)我很好奇,如果有一个不同的,更容易的方式,我忽略.也许我忽略了一些API调用或窗口样式?
我相信Google已经通过Chrome使用自己动手操作的方法为我解答了这个问题.如果有人有新信息,我会将问题留待另一天,但我相信我已经自己回答了这个问题.
Chr*_*ann 11
这是一篇文章,其中包含有关如何为应用程序使用自定义"chrome"的完整代码示例:
http://geekswithblogs.net/kobush/articles/CustomBorderForms3.aspx
这看起来像一些非常好的东西.它的系列共有3篇文章,它运行得很好,而且在Vista上也是如此!
谷歌浏览器没有使用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.Run Code Online (Sandbox Code Playgroud)
看起来它正在使用资源src\chrome\app\theme来绘制框架按钮.
所以看起来我希望在XP上实现Vista主题的某种廉价方式已经破灭了.唯一的方法是手动绘制窗口的非客户区域.我相信像这样的东西可能是正确的轨道,因为它让Windows处理非客户端的东西,如移动和调整窗口大小.
除非有人能找到一种方法在XP上神奇地启用Vista主题,否则这就是问题的答案,但我显然无法将自己的帖子标记为答案.
| 归档时间: |
|
| 查看次数: |
28016 次 |
| 最近记录: |