Как переназначить кнопку закрытия окна, не затрагивая ALT + F4 или закрывая ее на панели задач? - PullRequest
2 голосов
/ 20 марта 2012

Я делаю программу с собственным C ++ и WinAPI.

Эта программа имеет главное окно приложения, которое я хочу быть несколько постоянным.Кажется естественным закрыть окно с помощью красной кнопки X, и я часто случайно нажимаю на него, когда на самом деле не хочу выходить из программы (это происходит со мной с Teamspeak).Итак, я пытаюсь переназначить красную кнопку X в кнопку минимизации, чтобы избежать случайного выхода.

Однако у моего приложения должен быть какой-то способ выхода из программы со стандартными элементами управления системой.Я хочу разрешить ALT + F4 и щелкнуть правой кнопкой мыши значок на панели задач, чтобы закрыть.Я попытался перехватить WM_CLOSE и SYSCOMMAND (SC_CLOSE), но, похоже, это отключило все стандартные системные методы выхода из программы (если не считать ее уничтожение в Process Explorer - не совсем стандартный метод).

Есть ли способ только перехватить красную кнопку X окна ?Я заметил, что Windows Live Messenger делает это, но я понятия не имею, как.

1 Ответ

3 голосов
/ 20 марта 2012

Обработайте WM_NCLBUTTONDOWN сообщение и используйте WM_NCHITTEST, чтобы проверить его, клик вот-вот будет передан в HTCLOSE элемент управления (это то, к чему ваш красный [X] разрешается). Или, в качестве альтернативы, обрабатывайте WM_NCHITTEST и предотвращайте обнаружение HTCLOSE части графического интерфейса вашего окна, заменяя возвращаемое значение чем-то другим.

...