如何从我的窗口标题栏中移除关闭按钮?

The Old New Thing (Raymond Chen) 新闻

摘要

本文介绍了如何在Windows应用程序窗口中移除或禁用关闭按钮,讨论了不同方法及其对开发者的影响。

<p>偶尔,有人想要创建一个没有关闭按钮的窗口。</p> <p>唯一移除关闭按钮的方法是完全不要系统菜单:从窗口中移除 <code>WS_<wbr />SYS­MENU</code> 样式。但这也会移除最小化和最大化按钮,因此有点极端。</p> <p>如果您想要系统菜单,或者您想要最小化和最大化按钮,您至少可以通过禁用 <code>SC_CLOSE</code> 菜单项来禁用关闭按钮。</p> <pre>HMENU menu = GetSystemMenu(hwnd, FALSE); EnableMenuItem(menu, SC_CLOSE, MF_DISABLED); </pre> <p>当然,您可以使用终极选项并实现自己的自定义标题栏。然后您可以随心所欲。但大多数人可能不愿意将事情做到如此极端。</p> <p>但真的,尽量不要隐藏或禁用关闭按钮。最终用户不喜欢这样。这会让他们感到受困。</p> <p>文章 <a href="https://devblogs.microsoft.com/oldnewthing/20260911-00/?p=112691">如何从我的窗口标题栏中移除关闭按钮?</a> 首次发表于 <a href="https://devblogs.microsoft.com/oldnewthing">The Old New Thing</a>。</p>
查看原文
查看缓存全文

缓存时间: 2026/09/14 14:16

# 如何从窗口标题栏移除关闭按钮?- 新事物考古学 来源:https://devblogs.microsoft.com/oldnewthing/20260911-00?p=112691 2026年9月11日 0 条反应 偶尔会有人希望创建一个没有关闭按钮的窗口。 唯一能彻底移除关闭按钮的方法是完全去掉系统菜单:从窗口样式中移除`WS_SYSMENU`属性。但这也会同时移除最小化和最大化按钮,未免过于激进。 如果希望保留系统菜单,或者保留最小化/最大化按钮,至少可以通过禁用`SC_CLOSE`菜单项来使关闭按钮失效: ``` HMENU menu = GetSystemMenu(hwnd, FALSE); EnableMenuItem(menu, SC_CLOSE, MF_DISABLED); ``` 当然也可以选择终极方案——实现完全自定义的标题栏。这样就能为所欲为。但大多数人恐怕不愿采取如此极端的措施。 不过说真的,请尽量不要隐藏或禁用关闭按钮。终端用户会很反感这种做法,这会让他们产生受困的感觉。 ### 分类 ## 作者 Raymond Chen Raymond 参与 Windows 系统演化已逾三十年。2003年他创建了名为「新事物考古学」的博客,其受欢迎程度远超他最疯狂的想象,这种发展态势至今仍令他感到毛骨悚然。该博客后来衍生出一本同名著作(Addison Wesley出版社2007年出版)。他偶尔会出现在 Windows 开发文档推特账号上,讲述一些毫无实用价值的故事。 ## 后续阅读 ## 保持关注 接收新文章发布通知 关注本博客 - https://twitter.com/ChenCravat - YouTube频道 (https://www.youtube.com/playlist?list=PLlrxD0HtieHge3_8Dm48C0Ns61I6bHThc) - https://github.com/oldnewthing - https://devblogs.microsoft.com/oldnewthing/feed/

相似文章

Captain Kill Switch

Product Hunt

Captain Kill Switch 是一款免费、私密且跨平台的工具,允许用户从菜单栏一键关闭所有打开的应用程序,适用于 macOS、Windows 和 Linux。

如何告知Windows我正在写入二进制文件?

The Old New Thing (Raymond Chen)

本文解释了Windows在操作系统层面并没有内置二进制与文本模式的概念;这种区别是由运行时库(如C运行时)处理的。它澄清了Windows将所有文件视为字节,内容转换必须手动执行或通过库来完成。