Как предотвратить завершение работы, если мое главное окно представляет собой диалоговое окно Win32?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как предотвратить завершение работы, если мое главное окно представляет собой диалоговое окно Win32?

Сообщение Anonymous »

Я работаю над программой Win32 C++, которая имеет довольно простой и не особенно динамичный интерфейс. Осмотревшись, я нашел возможность графического создания диалога в редакторе ресурсов и просто использования его в качестве главного окна. Это работало хорошо, с ним было легко справиться, и он делал все, что должен. Пока...
Одна из вещей, которую я пытаюсь реализовать, — это запретить программе выключаться при выполнении определенных операций во избежание проблем. Я прочитал документацию 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;
}
Я пытался вернуть DefWindowProc по умолчанию, что на самом деле блокирует завершение работы, но вызывает проблемы при открытии другого диалогового окна. Кроме того, согласно этой документации, его не следует использовать.
Итак, как должен мне это сделать?

Подробнее здесь: https://stackoverflow.com/questions/793 ... n32-dialog
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»