GetMessage Nachrichten filtern



  • Ich möchte, dass an die WndProc() meines Hauptfenster keinerlei Maus-Messages weitergeleitet werden.
    Mit

    GetMessage(&msg, NULL, WM_MOUSEFIRST, WM_MOUSELAST)
    

    könnte das vielleicht funktionieren.
    'Vielleicht' deshalb, weil ich befürchte, dass die Maus-Nachrichten dann zwar von GetMessage ignoriert werden, aber womöglich stapeln sich die Maus-Nachrichten dann trotzdem in der systemeigenen MessageQueue.
    Besteht Windows darauf, dass sich mein Fenster um Maus-Nachrichten kümmern MUSS, oder werden die Nachrichten in dem obigen Fall nicht nur von GetMessage() ignoriert, sondern zusätzlich auch noch als 'verarbeitet' von der Message-Queue genommen (?)
    Danke, wenn sich jemand genauer mit GetMessage() auskennt!



  • Also erstmal ist der Filter genau das Gegenteil von dem was du annimmst, denn der GetMessage Aufruf wie du ihn zeigst filtert die Mouse-Messages nicht aus, sondern gibt dir nur Mouse-Messages zurück.

    Davon abgesehen ist das IMO nicht der ideale Weg.

    Du könntest aber einfach die WindowProc des Fensters "verbiegen", und in deiner eigenen WindowProc einfach alle Mouse-Messages "schlucken".
    (EDIT: den Rest leitest du dann an die alte WindowProc weiter, nur falls das nicht klar sein sollte /EDIT)

    Tip: das macht man mit SetWindowLongPtr(GWLP_WNDPROC), und es nennt sich "subclassing"



  • @hustbaer
    warum muß er sein Hauptfenster subclassen, dat Ding hat doch bereits einen eigenen Eventhandler? Er muß nur dort alle relevanten Mousemessages nach seinen Vorstellungen abarbeiten.



  • Jo stimmt.
    Irgendwie kam mir das zu einfach vor, soll heissen: ich dachte mir, vielleicht hat er aus einem bestimmten Grund keine Kontrolle über die WindowProc.


  • Mod

    Könnte es sein, er sucht EnableWindow(...,FALSE) 😉 nur so ein Gedanke...


Anmelden zum Antworten