首页 >后端开发 >C++ >如何使用 P/Invoke 隐藏 WPF 窗口中的关闭按钮?

如何使用 P/Invoke 隐藏 WPF 窗口中的关闭按钮?

Linda Hamilton
Linda Hamilton原创
2025-01-03 02:37:38445浏览

How Can I Hide the Close Button in a WPF Window Using P/Invoke?

如何在 WPF Windows 中隐藏关闭按钮:P/Invoke 解决方案

在 WPF 中,隐藏关闭按钮可能是理想的选择在模式对话框中,同时保留标题栏。虽然内置 WPF 属性不提供此功能,但利用 P/Invoke 提供了一种解决方法。

步骤 1:声明相关常量和 DllImport 函数

开始将以下常量和 DllImport 声明添加到您的窗口class:

private const int GWL_STYLE = -16;
private const int WS_SYSMENU = 0x80000;
[DllImport("user32.dll", SetLastError = true)]
private static extern int GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport("user32.dll")]
private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);

第 2 步:在 Loaded 事件中隐藏关闭按钮

接下来,将此代码包含在 Window 的 Loaded 事件中:

var hwnd = new WindowInteropHelper(this).Handle;
SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_SYSMENU);

预计结果:

执行这些步骤后,关闭按钮将从标题栏中消失,而标题栏本身仍然可见。

重要提示:

虽然隐藏了关闭按钮,但用户仍然可以使用键盘快捷键或任务栏关闭窗口。为了防止这种情况,请考虑重写 OnClosing 事件并将 Cancel 设置为 true,如另一个答案中所建议的。

以上是如何使用 P/Invoke 隐藏 WPF 窗口中的关闭按钮?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn