我是Win32的新手,我一直在追求一个问题(如果它可以被称为问题),当用户抓住窗口标题栏并在屏幕上移动时,Windows会阻止程序的流程.
我没有合理的理由解决这个问题,除非它困扰我.一些可能性包括完全删除框架,但它似乎是一个不方便的黑客.有些游戏(单人游戏)根本没有发现这个问题.然而,我已经阅读过,当程序冻结时,多人游戏可能会遇到问题,因为它期望信息不断流动,并且在这样的延迟之后可能会被淹没.
我试过把它添加到我的 WindowProc
switch (uMsg)
{
case WM_SYSCOMMAND:
if (wParam == SC_CLOSE)
PostQuitMessage(0);
return 0;
...
...
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
Run Code Online (Sandbox Code Playgroud)
这似乎是一个快速的黑客,除了当我在关闭图标上徘徊时,我可以拉开鼠标并放开而不关闭程序,在此期间,当关闭图标时,程序再次被阻止.
此外,我不知道如何在用户单击标题栏并拖动鼠标时手动包含移动窗口所需的代码.对于初学者,我不知道要处理哪个uMsg和哪个wParam.
我的问题是,当用户点击退出按钮(或最小化/最大化按钮)时,如何在单击鼠标并通过按钮释放时处理案例时,如何禁止阻止,以及如何允许用户移动/拖动窗口而不阻止程序(或单击标题栏时发送的消息,而不是按钮或菜单)?
我正在创建窗口WS_SYSMENU | WS_MINIMIZEBOX.
我仍然希望程序响应最小化,最大化和退出命令.
如果多线程可以解决它,那么这很有趣,但我想知道我是否可以让它在单核处理器上工作.我已经阅读了有关钩子的内容,但MSDN页面仍然难以解释.