2010-01-23 1 views
0

Я пытаюсь поймать WM_QUERYENDSESSION, чтобы сохранить некоторые данные в приложении, но похоже, что я не получаю это сообщение о выходе пользователя из системы/перезапуске системы, когда приложение сводится к минимуму системный лоток. Как я могу его поймать?Не получаю WM_QUERYENDSESSION при минимизации до системного лотка

Спасибо.

Соответствующий код (ничего магии там, надеюсь :)):

ON_WM_QUERYENDSESSION() 

BOOL CMainFrame::OnQueryEndSession() 
{ 
    AfxMessageBox(L"Are we hitting this?"); 

return FALSE; 
} 

Для трей я использую сторонний LIB (CodeJock), который я, вероятно, не могут оставлять здесь, но, как правило, он создает скрытое окно для обработки сообщений, но главное окно - это просто ShowWindow (SW_HIDE), когда это необходимо. Возможно, мне нужно перехватить это сообщение в этом скрытом окне и передать его, мне нужно попробовать это.

+1

Я думаю, нам нужно будет увидеть некоторые из вашего кода. В частности, сбой лотка и код WM_QUERYENDSESSION. –

+0

Да, определенно нужно увидеть код здесь. Я видел проблемы с приложениями MFC, когда сообщения WM_QES были прерваны вспомогательными окнами IME, возвращающими FALSE (отключив расширенные текстовые службы, которые были решены этим), но я никогда не видел случая, когда выходила ошибка, но мое приложение не увидело сообщение. –

+0

Спасибо за ответы. Я добавил еще несколько объяснений на вопрос. Я рад предоставить больше кода, конечно. – dennisV

ответ

0

Это в основном используется сторонним классом, который мне нужно будет исправить.