2

我知道这可以在系统级别进行控制,但我想覆盖系统设置并仅对我的应用程序具有一定的外观。我假设必须有一个 Windows API 函数来控制它,因为我已经看到另一个 Windows 应用程序可以做到这一点。

(没有必要详细说明我不应该这样做的原因)

4

2 回答 2

2

如果您想为您的应用程序自定义外观,我只会让我的表单无边框并自己处理所有内容,方法是在 Paint 事件中绘制表单本身,或者在 Resize 事件中移动控件(面板等)。您必须处理诸如拖动、调整大小、关闭/最小化等事情,但这些都不是特别困难。

这是对类似问题的回答,它显示了自己做的基础知识(它适用于 windows mobile,但它也适用于普通 windows)。

于 2009-08-07T13:14:30.467 回答
2

应用程序窗口的这些外部元素统称为窗口“chrome”,实际上是由操作系统呈现的。在 windows API 级别使用各种标志来控制每个窗口实例的某些方面(例如,控制框、边框、最小/最大按钮等的存在),但可调整大小的窗口的边框宽度由系统设置确定以确保一致性,并且不能在逐个窗口的基础上进行配置。

在许多情况下,您可以通过与 windows API 交互来控制 .NET 未公开的窗口的某些方面,并且阅读 windows API 文档以确定在较低级别可能发生的事情是有益的。我建议阅读 CreateWindowEx 的文档作为起点。

http://msdn.microsoft.com/en-us/library/ms632680(VS.85).aspx

.NET 允许您更改 FormBorderStyle 属性以在无边框、单像素宽度边框和可调整大小(粗边框)之间进行选择。如果您想做一些自定义的事情,您必须将 .NET 边框样式设置为无,然后自己承担渲染窗口镶边的责任。这需要渲染您自己的标题栏、最小/最大按钮和窗口边框。这不是一项轻松的工作,但许多应用程序都可以做到。如果您真正想要的只是控制边框宽度,那还有很长的路要走。

本文介绍了如何在 WPF 中处理此任务,并且也可能有用。

WPF中的窗口Chrome

于 2009-08-07T13:23:22.140 回答