【发布时间】:2021-06-22 09:32:13
【问题描述】:
我正在使用 Unity 在 Windows 上开发单窗口应用程序。
我允许用户调整窗口大小,但必须保持纵横比。
我想阻止全屏和半屏,因为它们会破坏纵横比。
我发现以下操作可以使应用全屏或半屏。
- 全屏:
- 单击标题栏上的最大化按钮
- 将窗口拖到屏幕顶部
- 按 Alt + Enter 键
- 按 Windows + 向上箭头键
- 半屏:
- 将窗口拖动到屏幕的左/右
- 按 Windows + 左/右箭头键
我想全部禁用。
这可以禁用标题栏上的最大化按钮。
HandleRef hWnd = new HandleRef(null, GetActiveWindow());
long style = GetWindowLong(hWnd, GWL_STYLE);
style &= ~WS_MAXIMIZEBOX;
SetWindowLong(hWnd, GWL_STYLE, style);
这可以禁用 Windows + 向上箭头键。
private static IntPtr WndProc(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam)
{
switch (msg)
{
case WM_SYSCOMMAND:
if (wParam.ToInt32() == SC_MAXIMIZE) {
return IntPtr.Zero;
}
break;
}
return CallWindowProc(oldWndProcPtr, hWnd, msg, wParam, lParam);
}
但其他操作仍然有效。
如何禁用其他操作?
【问题讨论】:
标签: c# windows unity3d fullscreen wndproc