Jusqu'� maintenant, nous avons fait pas mal de trucs, tous toujours
plus beaux les uns que les autres, mais nous n'avons jamais pu vraiment contr�ler
les objets. Ce que nous faisions de mieux c'�tait tourner autour plus
ou moins vite et puis c'est tout. En plus la vitesse de rotation d�pendait
de la vitesse d'affichage, et vu que c'�tait pr�vu pour tourner
de fa�on fluide en software, on distinguait plus grand chose avec une
GeForce... Nous allons donc apprendre comment g�rer les interactions
utilisateurs : souris, clavier, et pourquoi pas tablette graphique. Il n'y aura
pas de code OpenGL sp�cifique dans ce tutorial, mais vous pourrez l'utiliser
pour modifier les exemples des tuts pr�c�dents. | |
Le principal message concernant le clavier est WM_CHAR .
Le caract�re est contenu dans wParam (� convertir en TCHAR ).
Ce message n'est pas g�n�r� directement, mais c'est une
traduction du message WM_KEYDOWN .
Ce dernier g�re tous les messages provenant du clavier, m�me les
touches �tendues. Si la touche est une touche ASCII normale, alors TranslateMessage()
g�n�rera un message WM_CHAR
� partir du WM_KEYDOWN , pour
que le message soit plus simple � g�rer. Si vous n'appelez pas
TranslateMessage(Msg) pour chaque
message, vous devrez g�rer tous les messages provenant du clavier �
travers le message WM_KEYDOWN . Pour
ce message, wParam contient le code
de la touche virtuelle enfonc�e. Voici la liste des touches virtuelles
possibles :
VK_LBUTTON (bouton gauche de la souris)
VK_RBUTTON (bouton droit de la souris)
VK_MBUTTON (bouton milieu de la souris)
VK_CANCEL
VK_BACK
VK_TAB
VK_CLEAR
VK_RETURN
VK_SHIFT
VK_CONTROL
VK_MENU (Alt)
VK_PAUSE
VK_CAPITAL (Caps Lock)
VK_ESCAPE
VK_SPACE
VK_PRIOR (Page Up)
VK_NEXT (Page Down)
VK_END
VK_HOME
VK_LEFT
VK_UP
VK_RIGHT
VK_DOWN
VK_SELECT (???)
VK_EXECUTE (???)
VK_SNAPSHOT (Print Screen)
VK_INSERT
VK_DELETE
VK_HELP
VK_0, ... , VK_9
VK_A , ... , VK_Z
VK_LWIN (touche 'Windows' gauche - pour les claviers windows)
VK_RWIN (touche 'Windows' droite - pour les claviers windows)
VK_APPS (touche 'Apps' - pour les claviers windows)
VK_NUMPAD0, ... , VK_NUMPAD9
VK_MULTIPLY (*)
VK_ADD (+)
VK_SUBTRACT (-)
VK_DECIMAL (.)
VK_DIVIDE (/)
VK_F1, ... , VK_F24
VK_NUMLOCK
VK_SCROLL (Scroll Lock)
VK_ATTN (???)
VK_CRSEL (???)
VK_EXSEL (???)
VK_EREOF (???)
VK_PLAY (???)
VK_ZOOM (???)
VK_NONAME (???)
VK_PA1 (???)
VK_OEM_CLEAR (???)
Les touches sans parenth�ses se passent de commentaires, celles comment�es
par (???) ne sont pas sp�cifiques aux claviers standards PC.
Vous aurez aussi remarqu� que les clics de souris peuvent aussi �tre
g�r�s gr�ce aux touches virtuelles : le message WM_KEYDOWN
n'est donc pas un simple message clavier, mais g�re aussi pas mal de
touches sp�ciales. | |
L� par contre y'a pas mal de messages. Voici la liste des messages utiles
:
WM_LBUTTONDBLCLK, WM_LBUTTONDOWN, WM_LBUTTONUP,
WM_MBUTTONDBLCLK, WM_MBUTTONDOWN, WM_MBUTTONUP, WM_RBUTTONDBLCLK, WM_RBUTTONDOWN,
WM_RBUTTONUP, WM_MOUSEMOVE : Ces messages se comprennent d'eux-m�mes.
Les valeurs de wParam et lParam
sont les m�mes pour tous : wParam contient
les autres touches appuy�s en m�me temps : MK_CONTROL ,
MK_SHIFT ... et MK_LBUTTON ,
MK_MBUTTON , MK_RBUTTON .
LOWORD( lParam)
et HIWORD( lParam)
renvoient quand � eux les coordonn�es x et y du curseur.
WM_MOUSEWHEEL : C'est �
peu pr�s la m�me chose que pour WM_MOUSEMOVE ,
sauf que l� les touches parall�les sont stock�es dans
LOWORD( wParam) ,
et HIWORD( wParam)
contient la valeur de la rotation de la molette.
Il y en a quelques autres, mais ils ne sont pas suffisamment utiles pour �tre
pr�sent�s ici, et de toute fa�on vous avez la liste de
tous les messages dans l'aide de VC++.
Ben voil� c'est d�j� termin�. Pas de source �
t�l�charger aujourd'hui, puisqu'on a rien vu de particulier niveau
OpenGL.
Antoche | |