Wie verhindere ich ein Herunterfahren, wenn mein Hauptfenster ein Win32-Dialog ist?C++

Programme in C++. Entwicklerforum
Guest
 Wie verhindere ich ein Herunterfahren, wenn mein Hauptfenster ein Win32-Dialog ist?

Post by Guest »

Ich arbeite an einem Win32-C++-Programm, das eine recht einfache Schnittstelle hat, die nicht besonders dynamisch ist. Als ich mich umsah, entdeckte ich die Möglichkeit, im Ressourceneditor grafisch einen Dialog zu erstellen und diesen einfach als Hauptfenster zu verwenden. Das hat gut funktioniert, war einfach zu handhaben und hat alles getan, was es sollte. Bis...
Eines der Dinge, die ich zu implementieren versuche, ist, dass das Programm verhindert, dass sich der Computer ausschaltet, wenn er bestimmte Vorgänge ausführt, um Probleme zu vermeiden. Ich habe mir die recht unkomplizierten Microsoft-Dokumente durchgelesen und sie implementiert, aber nichts schien zu funktionieren. Dann bin ich auf diese Seite gestoßen, die mich darauf hingewiesen hat, wo das Problem liegen könnte:

Beachten Sie, dass das System keine Konsolenanwendungen oder Anwendungen ohne sichtbares Fenster zulässt um das Herunterfahren abzubrechen.

Was mich dazu brachte, mich zu fragen, ob ein Dialog aus irgendeinem Grund nicht zählt. Also habe ich versucht, vorübergehend zu einem leeren Fenster als Hauptfenster zu wechseln und es zu registrieren (etwas, was man mit einem Dialog so nicht machen kann) – und tatsächlich ist es plötzlich in der Lage, den Versuch, das Fenster herunterzufahren, ordnungsgemäß abzufangen.
Wie kann ich also den Herunterfahrversuch richtig abfangen, wenn mein Hauptfenster ein Dialog ist?
Mein Code sieht ungefähr so ​​aus:

Code: Select all

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;
}
Ich habe versucht, DefWindowProc als Standard zurückzugeben, was tatsächlich funktioniert, um das Herunterfahren zu blockieren, aber Probleme verursacht, wenn ich einen anderen Dialog öffne. Laut dieser Dokumentation sollte es auch nicht verwendet werden.
Wie soll ich dabei vorgehen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post