删除 window 的标题上下文菜单,但保留其他所有内容

Remove a window's title context menu, but leaving everything else intact

我发现删除 window 的标题上下文菜单的唯一方法是:

SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_SYSMENU);

其中 WS_SYSMENU 类似于 0x80000。

但这也隐藏了 window 的关闭按钮,这是我不想要的。

有一个我还没有尝试过的解决方法。我可能可以覆盖 window 上的右键单击,也可以覆盖 ALT+Space(或 ALT+Up)组合键。我正在使用 WPF。

更具体地说,我想要一个 window,看起来像这样:

  1. 标题栏中没有图标
  2. 没有上下文菜单
  3. 没有最大化按钮(不仅仅是禁用)
  4. 有一个最小化按钮

我能用这个实现的第一个

第三点和第四点不能同时做。所以我选择隐藏最小化和最大化按钮,并使用关闭按钮和托盘图标解决方案。 (点击关闭按钮不会关闭应用程序,而是将其最小化到托盘图标。)

只剩下第二点了。有一个简单的解决方案吗?我不想创建一个完全自定义的 window,我也不是特别喜欢我提到的解决方法。

我认为您不想这样做,因为它会禁用某些 windows 自定义程序,使用户无法将 window 固定在顶部。请不要禁用标题栏上下文。

答案是:这是不可能的。