Licence Informatique Interface Homme Machine
TP 4
Interfaces visuelles – Menus – Tracé de dessin (suite) Boîtes de dialogue
Travail personnel
1. Compléter l’application IHM vue en TD, pour gérer une forme géométrique complémentaire (par exemple un triangle ou un losange …).
2. Compléter l’application IHM pour ajouter une option de menu « Taille » avec 3 sous-options « Petit »
« Moyen » « Grand ». Ces options permettront de choisir une taille courante pour les objets à dessiner parmi 3 en appliquant le même principe de choix que pour les couleurs et les formes. On pourra ajouter une variable m_taille (entier) dans CIHMDoc pour gérer cette taille.
3. Mise en surbrillance.
On souhaite compléter l’application IHM pour permettre une mise en surbrillance (changement de la couleur) de l’élément qui est sous la souris lorsque l’utilisateur déplace la souris sur le dessin.
Le gestionnaire OnMouseMove peut détecter constamment l’emplacement du curseur. On modifiera alors le code de ce gestionnaire pour faire en sorte que, s’il y en a un élément sous le curseur, il soit toujours mis en surbrillance.
On pourra travailler de la manière suivante :
L’opération de mise en surbrillance en elle-même peut être assurée par les méthodes Draw des éléments. On va donc modifier cette méthode (dans chacune des classes Ligne, Rectangle, Cercle, … en lui transmettant en paramètre l’élément qui est sous le curseur de la souris ou NULL. Si l’élément courant est égal à l’élément sous le curseur alors il doit se dessiner d’une couleur spécifique, sinon il se dessine dans sa couleur normale.
o virtual void Draw(CDC* pDC, CElement* pElement)
On ajoute une méthode dans la classe CIHMView qui permet la recherche de l’élément sous le curseur. Cette méthode prend en paramètre la position de la souris (CPoint) et retourne soit l’élément trouvé, soit NULL. On pourra utiliser une méthode de la classe MFC CRect : PtInRect qui permet de tester si un point est dans un rectangle (de type CRect).
o BOOL CRect :: PtInRect( POINT point )
Le principe de recherche pourra être le suivant : on parcourt la liste des éléments et pour chaque élément on regarde si le point (souris) appartient au rectangle englobant de l’élément.
Si oui, on retourne cet élément, si aucun élément n’est trouvé on retourne NULL.
o CElement * CIHMView :: SelectElement (CPoint point)
On définit le code du gestionnaire OnMouseMove. A chaque mouvement souris, on cherche l’élément sélectionné, s’il est différent de l’ancien, on doit redessiner l’ancien élément dans sa couleur normal (s’il y avait un élément sélectionné), et redessiner le nouveau en surbrillance (s’il n’est pas nul).
Travail sur le TD5
Selon votre groupe, si vous avez déjà fait le TD5 en TD, vous pouvez commencer l’implémentation des boîtes de dialogues (simples et à onglets).