Dialog aus Resourcen in eigene Messageloop einbinden
-
Einen Dialog kann ich ja so anzeigen:
DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOGMAIN),NULL,(DLGPROC)DLG_DIAOLOG);Diese Funktion hat jedoch eine eigene Messageloop, die ich nicht kontrollieren kann. Ich fände aber die Möglichkeit, innerhalb der Messageloop etwas einzubauen, eine Funktion die irgendetwas tut:
PeekMessage(&message, NULL,0U,0U,PM_REMOVE); while(message.message!=WM_QUIT) { if(bArbeiten) bGotMessage=( PeekMessage(&message, NULL,0U,0U,PM_REMOVE)!=0); else bGotMessage=( GetMessage(&message, NULL, 0U, 0U)!=0); if(bGotMessage) { TranslateMessage(&message); DispatchMessage(&message); } else { Arbeite(); } }Hier wäre die Funktion Arbeite gemeint. Ich habe einfach keine Lust, ein Fenster mit Klasse und so weiter zu registrieren, und dann bei WM_CREATE jede Schaltfläche über CreateWindowEx(...) erstellen zu müssen. Deswegen würde ich diesen Dialog gerne über die Resourcen laden und trotzdem mit meiner eigenen Messageloop kontrollieren können.
Geht das? Wenn ja: Wie?
MFG;
-
Erzeuge einen nicht modalen Dialog und bau Deine iegne Nachrichtenschleife.
Der Weg sieht etwa so aus.
1. Parent Dialog disablen mit EnableWindow(...,FALSE);
2. Mit CreateDialog neuen Dialog erzeugen.
3. Eigene MessageLoop starten und IsDialogMessage nicht vergessen.
3. Bei WM_COMMAND IDOK oder IDCANCEL Flag setzen um Message Loop zu beenden. Dialog verstecken.
4. Messageloop beenden.
5. Parent Dialog enablen
6. Dialog zerstören.Ansonten wenn es nicht zu auffregend sein soll, kannst Du auch einfach WM_ENTERIDLE reagieren.
Timer sind natürlich auch eine Möglichkeit. Einfach eine sehr kleine Timerzeit wählen und Du hast fast den selben Effekt.
-
eventuell auch ein WH_MSGFILTER Hook?
-
keine ahnung schrieb:
eventuell auch ein WH_MSGFILTER Hook?
Ächtz. Warum in Gottesnamen das System mit absolut überflüssigen Hooks zu ballern? Aber irgendwie muss man ja das System in die Knie zwingen und unnötige Fehlerquellen schaffen.

-
Dieser Hook wird schon seine Berechtigung haben. Ob es für den Threaderseller das richtige ist weiß ich nicht. Es soll ja auch nicht ein systemweiter Hook sein.
-
Aber ein Msgfilter Hook greift immer bei bestimmten Nachrichten und eben nicht wenn nichts zu tun ist und darum geht es hier.
Würde man es über einen Hook lösen dann würde man das System gerade dann belasten wenn Nachrichten vorhanden sind oder eben bestimmte Nachrichten vorhanden sind.Nein einen Hook würde ich hier in keinem Fall empfehlen.