User-Nachrichten in CWinApp abfangen
-
das hatte ich sogar als erstes, funktioniert nicht
Weis wirklich keiner woran das liegt? Wäre dringend :-|
-
noch zur Konkretisierung: die CWinApp-Klasse befindet sich in einer DLL und erstellt nichtmodale Dialoge. Immer wenn ein Dialog geschlossen wird, soll dieser das an das WinApp-Objekt senden.
Ich habe jetzt festgestellt, dass die Nachricht an meinem Programm ankommt, welches die DLL auruft. Kann ich das irgendwie in der DLL verhindern? Oder generell wie bekomme ich es hin, dass die Nachricht in der DLL bei CWinApp ankommt und nicht im aufrufendem Programm?
-
Bei VC++ ist ein programm dabei das sich Spy++ nennt damit kannst du u.a. die Nachrichten anzeigen die Gerade in deinem Programm gesendet werden.
Zur Benutzung:
Start->Programme->Microsoft Visual C++ 6.0->Dienstprogramme für Microsoft Visual C++ 6.0->Spy++Dort <Strg>+<F> drücken
Neben "Suchwerkzeug:" ist ein Fenster mit einem Fadenkreuz darin. Dieses klickst du an und ziehst es auf das Fenster von dem du die Nachrichten wissen willst
Dann noch unten im Fenster das OptionsFeld "Nachrichten" anklicken und OK drücken.Es wird ein neues Fenster in Spy++ erstellt das dir die Daten anzeigt.
So bekommst du ALLE nachrichten die an das Fenster gesendet werden - wenn dir das zu viel ist und du ungefähr weisst was für eine art nachricht du hast kannst du das auch noch Filtern:
Drücke <Strg>+<o> und such dir die Nachrichten heraus die du wilslt, du kannst auch ganze NachrichtenFamilien auswählen.
Damit findest du vll die Nachricht die du abfangen willst, wenn nicht dann weisst du jetzt eben wie du das kannst wenn du es musst, und wie du überprüfst ob und wann eine Nachricht gesendet wird ^^
-
Erstmal danke für den Tipp
Aber irgendwie taucht die Nachricht nicht auf. Ist eine WM_USER-Nachricht und ich habe den ganzen Prozess beobachtetm zeigt keine Nachricht an. Aber das Absenden der Nachricht wird mir erfolgreich bestätigt. SO langsam gehen mir echt die Ideen aus ...
-
hm, ka weiss jetzt auch nicht mehr was man da machen könnte
aber wie mein Mathe Prof sagen würde:
Mach ne Bäckerlehre dann bist du diese Sorgen los
-
Beim Start arbeitet der noch Nachrichten ab, InitInstance usw. Danach aber scheint irgendwie nix mehr bei dem WinApp-Objket in der DLL anzukommen? Kann das sein oder täusch ich mich da oder muss ich irgendwo ne Methode aufrufen um was zu registrieren oder so?
Sobald das Ding jedenfalls initialisiert ist scheint es keine Nachrichten mehr zu bekommen.
-
Können nicht nur Fenster Nachrichten empfangen?
-
es können auch Threads Nachrichten empfangen dachte ich, mit PostThreadMessage, welche ich ja auch benutze.
Und die Klasse hat ja auch von Anfang an durch den Assistenten eine MessageMap
-
Threads bekommen mit sicherheit auch Nachrichten schliesslich muss ein thread ja wissen wann er welchen Zustand annehmen muss/kann (Start, warten, Stop,...)
wie/wo man die allerdings abfangen kann - ka
-
So ich habe jetzt versucht, in dem WinApp-Objekt ein CWnd-Objekt anzulegen um dort meine Nachrichten hinzuschicken, nur jetzt macht er nicht mal das Create
CMyWnd::CMyWnd() { CreateEx(WS_EX_OVERLAPPEDWINDOW,NULL,"DLL-Hauptfenster",WS_OVERLAPPED, CRect(0,0,20,20),NULL,1234); }
Was stimmt da wieder nicht?