Mysteriöse Messages, die nicht an mein hWnd gehen



  • Hallo,
    ich weiss nicht genau wie ich das Problem beschreiben soll, daher auch der komische Titel 😉
    Wenn ich ein oder mehrere Fenster erstelle, gibt es Messages, die an hWnds gehen, die NICHT zu meinen erstellten Fenstern gehören..

    Was sind das für seltsame Messages?
    Kann es vl. daran liegen, dass vor WM_NCCREATE, ab der ich mein hWnd überprüfen kann, bereits Messages gesendet werden, oder ist WM_NCCREATE wirklich die allererste Nachricht?

    Hinweis: Um alle Fenster mit meiner MessageLoop behandeln zu können, verwende ich folgenden Code (NULL statt hWnd, damit alle geholt werden):

    MSG msg;
    	while (GetMessage(&msg, NULL, 0, 0) > 0) {
    		TranslateMessage(&msg);
    		DispatchMessage(&msg);
    	}
    

    MfG,
    Max

    @edit:
    Bisher habe ich solche Messages einfach per DefWindowProc abgefertigt..



  • Manche Messages gehen an Fenster oder Prozesse von anderen Programmen, z. B. wenn dem Fenster eines anderen Programmes der Focus entzogen wurde (WM_KILLFOCUS) o. ä..



  • Von welchen "Mysteriöse[n] Messages" sprechen wir denn hier *zitter* ?


  • Mod

    Wenn man eine ComboBox erzeugt werden automatisch 2 Fenster erzeugt!
    Wenn Man Tooltips benutzt, ein COM STA erzeugt DDE benutzt etc etc. In all diesen Fällen werden versteckte Fenster erzeugt.
    Das ist normal!



  • Danke für die Antworten 😉

    @Elektronix:
    Ich dachte, GetMessage() holt nur die hWnds der Fenster des eigenen Threads..
    Wenn dann Messages an andere Fenster (also nicht meine eigenen) verschickt werden, dürften diese ja nicht durch meine WndProc laufen.. oder?

    @CodeFinder:
    Ab und zu tauchen die mysteriöse Messages wieder auf.. und dann erschrecken sie meine WndProc 😃
    Nein im Ernst: Ein paar habe ich durch Anhalten des laufenden Programmes mal angeschaut: Hauptsächlich WM_NC* Messages..

    @Martin Richter:
    Ich habe es zwar nicht dazugeschrieben, aber ich verwende auf diesem Testfenster keine Controls, und das Projekt erstellt wirklich nur 2 Fenster.. Aber vielleicht gibt es ja trotzdem versteckte Fenster..


Anmelden zum Antworten