OnButtonDown



  • Hallo liebe Leute,

    ich würde ganz gerne das Ereigniss OnButtonDown/Up auswerten. Ist das im VC6 überhaupt möglich ?

    Über die Funktion WM_LBUTTONDOWN (oder so ähnlich) kann ich die linke Maustaste abfangen. In dieser Funktion kann ich eine x/y-Position angeben. Muss ich dann genau auf dieser Position stehen damit das Ereignis ausgelöst wird ?

    Hat jemand damit Erfahrung ??

    Besten Dank im Voraus !

    levin



  • Ich glaube du hast nicht ganz das Prinzip der MFC verstanden.
    Mit OnLButtonDown kannst du lediglich auf einen Mausklick (des Users) reagieren.

    Devil



  • Ganz genau !

    und über CPoint ist es möglich einen Punkt/Bereich? einzustellen !

    da ich aber mindestens 4 Positionen brauche ist mir nicht klar wie das funzen könnte!

    levin



  • Ne, ne...

    Die Punktkoordinaten wo der User "geklickt" hat werden übergeben!
    D.h. dass du innerhalb der Funktion nur eine Auswertung der Koordinaten vornehmen mußt...

    [ Dieser Beitrag wurde am 07.05.2003 um 09:12 Uhr von Hexagon editiert. ]



  • Genau so könnte es gehen !!

    Besten Dank !

    Levin



  • Schade!
    Die Position der Maus wird nur ausgegeben wenn man in eine "freie" Fläche des Dialogs klickt.

    Klicke ich auf einen Button funktioniert es nicht !

    Was eigentlich auch logisch ist !

    ich werde als nächstes versuchen ein ActiveX in Borland zu erstellen!!

    Wenn noch jemand eine andere Idee hat nur raus damit !

    Bis auf weiteres

    levin



  • Und wenn du in OnButtonDown dir die aktuelle Mausposition holst (vorausgesetzt, der Button wird mit der Maus gedrückt)

    Roland



  • Hallo Levin,

    Du kannst einen Mausklick über einem Dialog-Item über PreTranslateMessage abfangen. Das geht so:

    BOOL MyDlg::PreTranslateMessage(MSG* pMsg)
    {
    // Message WM_LBUTTONDOWN wurde ausgeloesst
    if (pMsg->message == WM_LBUTTONDOWN)
    {
    HWND hBtnWnd;
    GetDlgItem(IDC_MYITEM, &hBtnWnd);

    // über dem Item mit der ID IDC_MYITEM
    if (pMsg->hwnd == hBtnWnd)
    {
    // was immer du hier tun willst
    }
    }

    return CDialog::PreTranslateMessage(pMsg);
    }

    Gruss
    Andrea



  • Vom Ansatz her schon super .... aber!
    Folgende Effekte treten auf:

    1. der Button wird ohne Mausklick sofort gedrückt wenn man mit dem Cursor über den Button fährt

    2. das Ereignis WM_LBUTTONDOWN wird im ganzen Dialog ausgelöst und ist somit nicht über if an den Button gebunden !

    ich werde weiter versuchne den Lösungsanstz auszubauen !

    levin



  • Falls du auf den Klick auf den Button reagieren willst, reicht ein einfacher
    Doppelklick im Dialogeditor auf den Button...

    Devil



  • Nein das Problem ist etwas schwieriger...

    Ich möchte einen Taster nachbilden, und brauche das Ereignis OnButtonDown und OnButtonUp um in eine Maschinensteuerun 1/0 zu schreiben.
    Diese Ereignisse gibt ja so im Klassenassi nicht (leider!), zumindest nicht VC6.

    Deswegen war mein Gedanke die linke Maustaste für diese Zwecke zu gebrauchen !!

    levin


Anmelden zum Antworten