Как остановить Windows от блокировки программы во время перетаскивания окна или удержания кнопки меню?
Я новичок в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;
И это кажется быстрым взломом, за исключением того, что, когда я косуюсь над значком закрытия, я могу отвести мышь и отпустить, не закрывая программу, и в течение этого времени, когда значок закрытия удерживается, программа снова блокируется.
Кроме того, я не знаю, как вручную включить код, необходимый для перемещения окна, когда пользователь щелкает заголовок и перетаскивает мышь. Для начала я не знаю, какойuMsg
с и 'wParam
с обработкой.
Мой вопрос заключается в том, как мне запретить блокировку в случае, когда пользователь нажимает кнопку выхода (или кнопки минимизации / максимизации), в то же время обрабатывая случай, когда мышь нажимают и отпускают над кнопкой, и как разрешить пользователь перемещает / перетаскивает окно, не блокируя программу (или какое сообщение отправляется, когда в строке заголовка нажимается, не будучи кнопкой или меню)?
Я создаю окно с.WS_SYSMENU | WS_MINIMIZEBOX
Я по-прежнему хочу, чтобы программа отвечала на команды минимизации, максимизации и выхода.
Если многопоточность может это исправить, то это интересно, но мне интересно, смогу ли я заставить его работать на одноядерных процессорах. И я читал о хуках, но мне по-прежнему сложно интерпретировать страницу MSDN.