WM_POWERBROADCAST
От: Аноним  
Дата: 11.04.05 15:09
Оценка:
Надо заставить приложение основанное на диалоге, сохранять данные при выключении питания, для чего пытаюсь перехватить сообщение subj.
примерно так
if(message == WM_POWERBROADCAST)
{
AfxMessageBox(_T("WindowProc::WM_POWERBROADCAST"), MB_OK|MB_ICONINFORMATION, 0); // в отладке для информации
OnDestroy(); // сохраняет данные
}

Кажется перепробовал уже все:
в app — PreTranslateMessage, SaveAllModified, ProcessMessageFilter
в dlg — PreTranslateMessage, OnWndMsg, WindowProc
ничто не работает
Re: WM_POWERBROADCAST
От: BlackHeretic Израиль  
Дата: 11.04.05 15:45
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Надо заставить приложение основанное на диалоге, сохранять данные при выключении питания, для чего пытаюсь перехватить сообщение subj.

А>примерно так
А>
А>if(message == WM_POWERBROADCAST)
А>{
А>AfxMessageBox(_T("WindowProc::WM_POWERBROADCAST"), MB_OK|MB_ICONINFORMATION, 0); // в отладке для информации
А>OnDestroy(); // сохраняет данные
  return TRUE;
А>}
А>

А> Кажется перепробовал уже все:
А>в app — PreTranslateMessage, SaveAllModified, ProcessMessageFilter
А>в dlg — PreTranslateMessage, OnWndMsg, WindowProc
А>ничто не работает
ICQ 156156278
Re: WM_POWERBROADCAST
От: DmitrySPb Россия  
Дата: 12.04.05 02:55
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Надо заставить приложение основанное на диалоге, сохранять данные при выключении питания


Обрабатываем сообщение WM_QUERYENDSESSION.
BOOL CMy1Dlg::OnQueryEndSession()
{
   if (!CDialog::OnQueryEndSession())
      return FALSE;

   // TODO:  Add your specialized query end session code here
   MessageBox("WM_QUERYENDSESSION");

   return FALSE; // Если запрещаем выход

   //return TRUE; // Если разрешаем выход
}


Запускаем, например из проводника, наш экзешник.
Пытаемся выйти.
Re[2]: WM_POWERBROADCAST
От: Аноним  
Дата: 12.04.05 08:42
Оценка:
Здравствуйте, BlackHeretic, Вы писали:

А>>
А>>if(message == WM_POWERBROADCAST)
А>>{
А>>AfxMessageBox(_T("WindowProc::WM_POWERBROADCAST"), MB_OK|MB_ICONINFORMATION, 0); // в отладке для информации
А>>OnDestroy(); // сохраняет данные
BH>  return TRUE;
А>>}
А>>

а как поможет возврат TRUE если MessageBox не вызывается?
Re[2]: WM_POWERBROADCAST
От: Аноним  
Дата: 12.04.05 08:43
Оценка:
Здравствуйте, DmitrySPb, Вы писали:

DSP>Обрабатываем сообщение WM_QUERYENDSESSION.


Спасибо, это работает.
но непонятно почему не перехватывается WM_POWERBROADCAST...
Re[3]: WM_POWERBROADCAST
От: DmitrySPb Россия  
Дата: 12.04.05 14:01
Оценка:
Здравствуйте, Аноним, Вы писали:

А>но непонятно почему не перехватывается WM_POWERBROADCAST...


Если я не ошибаюсь, оно используется в режимах энергосбережения,
например, при переходе в спящий режим.
А при выходе из ОС, завершении сеанса пользователя посылается WM_QUERYENDSESSION.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.