2010-01-23 7 views
0

J'essaie d'intercepter WM_QUERYENDSESSION pour enregistrer des données dans l'application, mais il semble que je ne reçois pas ce message lors de la déconnexion/redémarrage du système lorsque l'application est réduite au minimum plateau de système. Comment puis-je l'attraper?Je ne reçois pas WM_QUERYENDSESSION une fois réduit dans la barre d'état

Merci.

code approprié (rien de magique là-dedans, je l'espère :)):

ON_WM_QUERYENDSESSION() 

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

return FALSE; 
} 

Pour l'icône J'utilise un lib tiers (Codejock), que je ne peux probablement pas poster ici, mais généralement, cela crée une fenêtre cachée pour traiter les messages, mais la fenêtre principale est simplement ShowWindow (SW_HIDE) si nécessaire. Peut-être que j'ai besoin d'intercepter ce message dans cette fenêtre cachée et de le laisser passer, je vais devoir essayer ça.

+1

Je pense que nous aurions besoin de voir votre code. Plus précisément, le plateau minimise et le code WM_QUERYENDSESSION. –

+0

Oui, certainement besoin de voir du code ici. J'ai vu des problèmes avec les applications MFC où les messages WM_QES ont été annulés par les fenêtres d'aide IME retournant FALSE (désactivant les services de texte avancés résolus), mais je n'ai jamais vu de cas de fermeture de session mais mon application n'a pas vu le message. –

+0

Merci pour les réponses - J'ai ajouté quelques explications à la question. Je suis heureux de fournir plus de code bien sûr. – dennisV

Répondre

0

Ceci est fondamentalement mangé par une classe tierce que je vais devoir réparer.