Frage zu OnLButtonDown



  • Hey Leute,
    folgende Frage, wenn ich zum Beispiel ne Klasse habe, welche von CDialogEx abgeleitet ist, und ich jetzt im Klassenassistent die Meldung WM_OnLButtonDown auswähle und dafür ne Funktion meiner Klasse mache myDialog::OnLButtonDown( UINT flags, CPoint point ).

    Wieso ist in der Implementation der Funktion dann immer diese Zeile drin?
    CDialogEx::OnLButtonDown( UINT flags, CPoint point )?
    Ist in meinem Tutorial auch so?
    Was ergibt das für einen Sinn?

    Und wo im Code wird eg meine Funktion mit der Meldung verknüpft? Irgendwo muss ja ne Verknüpfung sein, dass wenn die Meldung auftritt meine Funktion aufgerufen werden muss oder wie funktioniert das?

    Danke schonmal

    Gruß freeG



  • fr33g schrieb:

    Hey Leute,
    Wieso ist in der Implementation der Funktion dann immer diese Zeile drin?
    CDialogEx::OnLButtonDown( UINT flags, CPoint point )?
    freeG

    Das ist der Aufruf der Basisversion. Man hat hier die Möglichkeit die Parameter die an die Standardfunktion geschickt werden nochmal zu verändern.

    fr33g schrieb:

    Und wo im Code wird eg meine Funktion mit der Meldung verknüpft?
    freeG

    Das läuft über die MESSAGE_MAP Makros in der cpp deines Dialogs.



  • Hallo,

    connan schrieb:

    Man hat hier die Möglichkeit die Parameter die an die Standardfunktion geschickt werden nochmal zu verändern.

    Nein, das stimmt hier nicht, denn:

    MSDN-Doku schrieb:

    This member function is called by the framework to allow your application to handle a Windows message. The parameters passed to your function reflect the parameters received by the framework when the message was received. If you call the base-class implementation of this function, that implementation will use the parameters originally passed with the message and not the parameters you supply to the function.

    MfG,

    Probe-Nutzer



  • Ok, so weit verstehe ich das.

    Aber was heißt bei "BEGIN_MESSAGE_MAP( CMyDoc, CDocument ) das CMyDoc und das CDocument? Also für was steht das?

    Genau so würd ich gern wissen, wenn jetzt zum Beipsiel ein Button geklickt wird, sendet dann der Button selber die Nachricht los oder Windows? Die Nachricht wird dann an jede Applikation gegeben die auf Messages wartet oder wie? Und dort wird sie dann durch die Message_Map eben an die richtige Member-Funktion weitergeleitet oder?

    Und die Struktur einer Nachricht sieht doch so aus:

    typedef struct tagMSG
    {
    HWND hwnd;
    UINT message;
    WPARAM wParam;
    LPARAM lParam;
    DWORD time;
    POINT pt;
    } MSG;
    So hwnd ist ja der Handler, also der Empfänger der Nachricht, wie weiß der jenige der die Nachricht versendet, beim versenden schon wer der Empfänger ist?

    Versteh ich leider net so ganz, wär cool wenn mir das jemand erläutern könnte.

    Vielen Dank schonmal

    Gruß freeG


  • Mod



  • Vielen Dank,
    hatte in beiden Foren gepostet 🙄, wollte eh grad mal wieder nachschauen ob dort vielleicht jemand geantwortet hat 😉

    Gruß freeG


Anmelden zum Antworten