WM_MOUSEWHEEL abfangen

jokey2

Erfahrenes Mitglied
Hallo Gemeinde!

Ich habe in meiner Anwendung eine PropertyPage, die enthält ein paar Controls (Editfelder, Comboboxen, Buttons) und eine untergeordnete PropertyPage mit weiteren Controls und einem Scrollbalken.
Was ich jetzt erreichen möchte, ist folgendes:
Wenn ich am Mausrad drehe, soll festgestellt werden, ob der Mauszeiger über der untergeordneten PropertyPage ist und in diesem Falle das (funktionierende) OnMouseWheel der untergerdneten Page aufrufen.
Ich muß also irgendwie verhindern, daß das Fenster mit dem Fokus (z.B. eine Combobox) die WM_MOUSEWHEEL-Nachricht erhält.
Kann mir da einer weiterhelfen?
Ich habe schon versucht, im der übergeordneten Page ein OnMouseWheel einzubauen, von der aus ich dann das OnMouseWheel der untergeordneten Page aufgerufen habe, aber das hat nicht geklappt, da beim Aufruf der OnMouseWheel-Funktion der Basisklasse (CPropertyPage) offensichtlich wiederum die OnMouseWheel-Funktion der übergeordneten Page aufgerufen wurde.
Scheinbar läuft das mit der Nachrichtenverarbeitung 'von unten nach oben', also zuerst bekommt das Fenster mit dem Fokus die Nachricht und dann der Reihe nach die übergeordneten Fenster.
Muß ich das dann also im PreTranslateMessage des MainFrame machen und damit die ganze Verarbeitung der WM_MOUSEWHEEL-Nachrichten selber implementieren?
Hat irgendjemand konstruktive Vorschläge?
 
Hallo jokey2,

überschreibe doch in deiner CPropertyPage die Funktion PreTranslateMessage() und behandle die Nachricht WM_MOUSEWHEEL dort..

Diese Funktion wird aufgerufen, bevor die Message das Nachrichtensystem betritt.

Dort kannst du dann auch verhindern, dass diese Message weitergeleitet, bzw. weiter verarbeitet wird.

Also in etwa so :
Code:
BOOL CMyPropertyPage::PreTranslateMessage(MSG* pMsg)
{
    if( pMsg->message == WM_MOUSEWHEEL ) {
        // Tu, was du zu tun hast
        return 1; // Nachricht wird nicht weiter vom System verarbeitet
    }
    return CPropertyPage::PreTranslateMessage(pMsg);
 }

Das sollte dein Problem lösen.

Schönen Gruß,

Peter
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück