Meldungsabarbeitung ändern?



  • Hallo.

    Ich habe eine SDI-CView Anwendung mit einem dynamischen Splitterwindow. Nun möchte ich, dass auf Mausklicks in den einzelnen CView-Ansichtsfenster nicht die Meldungen der CView-Klasse aufgerufen werden (CView::OnLButtonDown) sondern die jeweiligen Meldungen des Splitterwindows oder des Mainframe (weil ich die Klickkoordinaten im Vergleich zur ganzen Fenstergröße brauche).

    Aber wo teile ich VC++ das mit?



  • Ich kann das Programm ja soweit manipulieren, dass ich in der CVIEW::ONLBUTTONDOWN einfach eine Message (WM_LBUTTONDOWN) an CMainframe schicke, aber dann habe ich das Problem, dass er die Mauskoordinaten nicht an der richtigen Stelle ausliest, da er die Koordinaten relativ zur linken oberen Ecke des angeklickten Views nimmt statt die Koordinaten relativ zur linken oberen Ecke des Fensters (was beim Splitterwindow nur im oberen linken View hinhaut).



  • Windows Notifications "bubblen" automatisch nach oben, für Messages mußt du das aber von Hand machen.

    Für die Koordinatenumrechnung:
    CWnd::ScreenToClient, CWnd::ClientToScreen, MapWindowPoints



  • Danke für den Tipp. Ich habe mir momentan ein wenig umständlich (aber für meine Zwecke hinreichend) geholfen, indem ich die Methode

    CWnd::MapWindowPoints

    benutzt habe, die die Koordinaten des Views automatisch in die Koordinaten des Parent-Fensters transformiert und habe dann ONLBUTTONDOWN des Parentfensters manuell aufgerufen. 🙂


Anmelden zum Antworten