Как остановить 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.

Ответы на вопрос(3)

Ваш ответ на вопрос