MFC --> Eventhandling



  • Hallo,

    hätte da mal eine frage. ich habe ein dialogfenster mit verschiedenen controls. zum beispiel buttons, labels activeXcontrols editor etc. wenn ich jetzt mit der linken maustauste in den dialog klick und ich treff ein steuerelement, würde da das applikationsfenster mitbekommen was für steuerelement durch den mausklick gedrückt wurde?

    quasi die reihenfolge wenn das klickevent erfolgt. da zum beispiel wenn ich das WM_LMouseButtonDown-ereignis der Applikation überschreibe sie selbst nur die klicks mitbekommt die nicht auf anderen steuerelementen erfolgt sind. die priorität scheint demzufolge erstmal das entsprechende steuerelement zu haben...aber kann die applikation ansich mitbekommen was angeklickt bzw. wo der mauszeiger gelandet wurde...quasi das ereignis der klicks halt irgendwie hochbubbln...da ja das Window nen container für die alle enthaltenen steuerelemente darstellt müsste es doch auch irgendwie mitbekommen was da gerad angeklickt wurde.

    Danke


  • Mod

    ArgV04 schrieb:

    hätte da mal eine frage. ich habe ein dialogfenster mit verschiedenen controls. zum beispiel buttons, labels activeXcontrols editor etc. wenn ich jetzt mit der linken maustauste in den dialog klick und ich treff ein steuerelement, würde da das applikationsfenster mitbekommen was für steuerelement durch den mausklick gedrückt wurde?

    Nein! Denn die Mausmessage wird dem obersten Fenster angeboten. Wenn dieses Fenster sagt im WM_NCHITTEST, dass es sein Client Bereich ist dann bekommt es die WM_LB... Nachricht gesendet. Andere Fenster bekommen hier nichts angeboten und haben bei diesem Prinzip der Eingabenachrichten auch nichts damit zu tun.

    ArgV04 schrieb:

    quasi die reihenfolge wenn das klickevent erfolgt. da zum beispiel wenn ich das WM_LMouseButtonDown-ereignis der Applikation überschreibe sie selbst nur die klicks mitbekommt die nicht auf anderen steuerelementen erfolgt sind. die priorität scheint demzufolge erstmal das entsprechende steuerelement zu haben...aber kann die applikation ansich mitbekommen was angeklickt bzw. wo der mauszeiger gelandet wurde...quasi das ereignis der klicks halt irgendwie hochbubbln...da ja das Window nen container für die alle enthaltenen steuerelemente darstellt müsste es doch auch irgendwie mitbekommen was da gerad angeklickt wurde.

    Solche Nachrichten kannst Du nur über PreTranslateMessage oder Hooks abfangen oder zentral kontrollieren. PreTranslateMessage geht auch nur wenn Deine Applikation nicht nur eine DLL sondern eine vollständige MFC Applikation ist.


Anmelden zum Antworten