更改最小化,关闭和最大化窗口的图标

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更改最小化,关闭和最大化窗口的图标相关的知识,希望对你有一定的参考价值。

简单的问题。如何更改关闭,最小化,最大化按钮的图标。我可以在Winforms和WPF中执行此操作吗?

答案

处理WM_NCPAINT消息时,将绘制窗口上的这些图标,标题和边框。因此,您接管绘制此方法的方法是处理此消息。

但是您无法访问有关图标的状态信息(即,您应该在其中按下哪个按钮,因为用户当前正在点击它)。你甚至不知道鼠标处理代码到底认为这些图标的确切位置。

因此,要接管非客户端绘制,您还需要接管非客户端鼠标处理,并且整个问题只是滚雪球,直到您编写了数千行代码并且您的窗口在用户时仍然表现不正常试图拖动它等

这是在非托管代码中,在托管代码(C#/ .Net)中,这甚至更难,因为您还必须进行互操作以获取您需要使用的某些API。

所以答案是:是的,它可能,但在WinForms和WPF中比在C ++中更难,而那些尝试过它的人现在都很秃顶。

另一答案

真正的答案是你不应该这样做。用户希望所有应用程序都能正常工作。让他们尝试弄清楚你使用什么漂亮的新图标意味着最小化可能会让他们不快乐。

另一答案

这样做并不困难,但需要做很多工作 - 你必须自己更换窗口框架并自己处理所有内容,默认窗口框架中有很多功能你必须重写 - 你还必须编写不同的代码适用于启用了Aero的Vista / 7。

在WPF中,您可以使用http://blogs.msdn.com/wpfsdk/archive/2008/09/08/custom-window-chrome-in-wpf.aspx中的各种技术

在WinForms中,您使用相同的基本技术,但我不知道一个页面总结了所有细节,如上面的链接。

另一答案

在wpf中,您可以为您的Window设置WindowStyle="None",然后为其设置自定义TitleBar,使用最小化,最大化和关闭按钮。我之前做过这个。您需要执行一些事件处理以执行最小化,最大化,关闭,拖动等操作。

另一答案

是的,你必须创建自己的窗口样式。例如,请参阅FluidKit,GlassWindows。

另一答案

如果要控制这些按钮的外观,则必须创建自己的按钮。这是使用Windows功能编写Windows应用程序的一个价值(它们具有标准的外观和感觉)。

以上是关于更改最小化,关闭和最大化窗口的图标的主要内容,如果未能解决你的问题,请参考以下文章

MFC SDI中,如何删除窗口的最大化和最小化功能(窗口右上角的2个图标)

从 WPF 窗口隐藏图标

使用Angular 7中的最大化/最小化图标调整引导模式对话框的大小

Windows10运行软件后,窗口不显示的解决办法

C# winfrom中如何隐藏标题栏中的 关闭按钮图标?

QT 如何最小化窗体