Sunteți pe pagina 1din 12

Evenimente generate de mouse. Functii ce trateaza aceste evenimente. Exemple.

Evenimente generate de mouse


Sistemul de operare Windows genereaz un numr suficient de evenimente legate cu mouse-ul pentru a construi aplicaii flexibile, care pot rezolva aproape orice problema. Luind in considerare importanta acestui fapt, SO Windows ofera mai multe tipuri de evenimente generate de mouse

Evenimente generate de mouse


Evenimente generate de mouse WM_LBUTTONDOWN Descrriere Butonul stng al mouse-ului este apsat

WM_LBUTTONUP WM_LBUTTONDBLCLK
WM_RBUTTONDOWN WM_RBUTTONUP WM_RBUTTONDBLCLK WM_MBUTTONDOWN WM_MBUTTONUP WM_MBUTTONDBLCLK

Butonul stng al mouse-ului este eliberat Dublu click pe butonul din stnga mouse-ului
Butonul din dreapta al mouse-ului este apsat Butonul din dreapta al mouse-ului este eliberat Dublu click pe butonul din dreapta mouse-ului Butonul din mijloc al mouse-ului este apsat (n cazul unui mouse cu trei butoane) Butonul din mijloc al mouse-ului este eliberat (n cazul unui mouse cu trei butoane) Dublu-click pe butonul din mijloc al mouse-ului (n cazul unui mouse cu trei butoane)

WM_MOUSEMOVE
WM_MOUSEWHEEL

Mutarea mouse-ul n fereastra aplicaiei


Rotirea butonului scroll

WM_MOUSELEAVE
WM_NCMBUTTONDOWN WM_NCMBUTTONUP WM_NCMOUSEHOVER WM_NCMOUSELEAVE WM_NCMOUSEMOVE WM_NCRBUTTONDBLCLK WM_NCRBUTTONDOWN WM_NCRBUTTONUP WM_RBUTTONDBLCLK WM_RBUTTONDOWN WM_RBUTTONUP WM_XBUTTONUP

Functii ce trateaza evenimente


Functii enumerate mai jos fac parte din clasa CWnd Functia ce trateaza evenimentul atunci cnd utilizatorul

apas butonul din stnga al mouse-ului. (CWnd:: OnLButtonDown) afx_msg void OnLButtonDown( UINT nFlags, CPoint point ); Functia ce trateaza evenimentul atunci cnd utilizatorul elibereaza butonul mouse-ului. afx_msg void OnLButtonUp( UINT nFlags, CPoint po int ); Functia ce trateaza evenimentul atunci cnd utilizatorul face dublu-clic pe butonul din stnga al mouse-ului. afx_msg void OnLButtonDblClk( UINT nFlags, CPoin

afx_msg void OnRButtonDown( UINT nFlags, C


Point point ); afx_msg void OnRButtonUp( UINT nFlags, CPoi nt point ); afx_msg void OnRButtonDblClk( UINT nFlags, C Point point ); afx_msg void OnMButtonDown( UINT nFlags, C Point point ); afx_msg void OnMButtonDblClk( UINT nFlags, CPoint point ); afx_msg void OnNcLButtonDown( UINT nHitTest , CPoint point ); afx_msg void OnNcLButtonDblClk( UINT nHitTest , CPoint point );

Aceste functii primesc 2 parametri: UINT nFlags si CPoint point. Paramentrul nFlags indica daca in timpul generarii
evenimentului a fost apasata tasta [CTRL], [SHIFT] sau oricare alta tasta a mouse-ului. Acest parametru poate fi orice combinaie dintre urmtoarele valori: MK_CONTROL MK_MBUTTON MK_LBUTTON MK_RBUTTON MK_SHIFT

Daca in acelasi timp cu tastarea butonului o fost tastata si tasta [CTRL] , atunci parametrul nFlags va contine valoarea MK_CONTROL. Daca a fost apasata tasta [SHIFT] atunci paramentrul va lua valoare MK_SHIFT. In cazul in care odata cu tastarea butonului drept apasam si butonul sting , atunci paramatrul nFlags va lua valoarea MK_LBUTTON, si invers. Parametrul CPoint point contine coordonatele cursorului in momentul tastarii butonului.

Exemplu
Creati un nou proiect de tip Dialog(File->New-

>Project-> MFC(MFC Application)->Dialog) cu denumirea Mouse

Deschideti resursa IDD_MOUSE_DIALOG. Selectati

din bara de meniu optiunea Edit/Select All , dupa care vor fi marcate toate elementele din fereastra de dialog si apasati tasta DELETE. Astfel toata suprafata ferestrei va fi destinata pentru desenare. Apasati click dreapta pe fereastra de dialog si alegeti optiunea Proprieties , astfel in partea dreapta se va deschide fereastra cu proprietati. Alegeti butonul Messages

In fereatra deschisa alegeti evenimentul WM_MOUSEMOVE

si scrieti urmatorul cod:

In urma executiei vom primi: