Одна из вещей, которую я пытаюсь реализовать, — это запретить программе выключаться при выполнении определенных операций во избежание проблем. Я прочитал документацию Microsoft, которая была достаточно простой, и реализовал ее, но, похоже, ничего не помогло. Затем я наткнулся на эту страницу, которая указала мне, в чем может быть проблема:
Обратите внимание, что система не поддерживает консольные приложения или приложения без видимого окна. для отмены завершения работы.
Это заставило меня задуматься, не засчитывается ли по какой-то причине диалоговое окно. Поэтому я попытался временно переключиться на пустое окно в качестве главного окна и зарегистрировать его (чего нельзя сделать с диалогом) - и, конечно же, оно внезапно смогло правильно перехватить попытку завершения работы.
Так как мне правильно перехватить попытку завершения работы, когда мое главное окно представляет собой диалоговое окно?
Мой код выглядит примерно так:
Код: Выделить всё
INT_PTR CALLBACK DialogProc(HWND dialogHandle, UINT message, WPARAM wParam, LPARAM lParam) {
switch (message) {
case WM_QUERYENDSESSION:
return FALSE;
case WM_ENDSESSION:
return FALSE;
// code for handling other window/dialog events
}
return false;
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... n32-dialog