Seite 1 von 1

Sendmessage empfangen

Verfasst: 3. November 2009 00:27
von dragon476
Hi,
ich versuche mittels dem QT-Creator ein Programm zu schreiben, das auf Window-Messages reagiert. Doch leider passiert nichts. Beim kompilieren gibt es keine Probleme, aber das Programm reagiert nicht auf die Nachrichten.
Mein Code mit dem ich es probiert habe:

Code: Alles auswählen

LRESULT CALLBACK MsgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_PAINT:
...
break;
}}
mfG Maddin

Verfasst: 3. November 2009 06:29
von Christian81
Und wie rufst du MsgProc auf?
Und warum brauchst du das überhaupt?

Verfasst: 3. November 2009 06:59
von dragon476
Hi,
in den Beispielen die ich gefunden habe, gingen die windows Nachrichten direkt an diese Prozedur. Wenn dies funktioniert, wollte ich auf Wm_copydata reagieren um von einer anderen anwendung mit sendmessage einen string an diese anwendung zu schicken

MfG

Verfasst: 3. November 2009 07:11
von Christian81
Eine Funktion muss aufgerufen werden sonst kann sie auch nicht ausgeführt werden... :roll:
Und was soll das mit Qt zu tun haben?

Verfasst: 3. November 2009 07:43
von macman
@dragon476: Ich hoffe Du hast deine eigene Application-Klasse, abgeleitet von QApplication, sonst wird das nichts. Dann brauchst Du nur winEventFilter( MSG* msg, long* l ) implementieren und es fluppt.

@Christian81: Sein Beispiel mit WM_PAINT ist Unfug, aber es gibt so einige Messages, die man eventuell mitbekommen möchte. WM_QUERYENDSESSION, WM_ENDSESSION oder WM_DEVICECHANGE, um nur mal einige zu nennen.

Verfasst: 3. November 2009 07:45
von Christian81
Ich weiß - aber sein Beispiel zeigt dies nicht auf und es sieht so aus als möchte er WM_PAINT implementiere.
Und Sessions handelt man über QSessionManager ;)

Verfasst: 3. November 2009 21:54
von dragon476
Okay, sollte sich eigentlich auf WM_COPYDATA beziehen,sry ;)

Also nachdem ich jetzt eine eigene Klasse von QApplication abgeleitet habe, kann das Programm auch Sendmessages empfangen. Nur wie bekomme ich jetzt den Inhalt in meine andere Klasse?

Code: Alles auswählen

int main(int argc, char *argv[])
{
    EventFilter a(argc, argv); //Hier ist der winEventFilter drin (von QApplication abgeleitet)
    reader w; //Hier drin soll der Inhalt der Nachricht verarbeitet werden (von QMainWindow abgeleitet)
    w.show();
    return a.exec();
}
[quote][/quote]

Verfasst: 4. November 2009 10:30
von macman
Eigenes Signal verschicken.