Bonjour,
j'ai écrit une librairie comportant une fenêtre d'affichage graphique complètement "custom" (enfin, basée sur les CWnd).
L'objet comprend plusieurs sous CWnd (il y a des "bandeaux" d'option à gauche et en haut, une "status bar" et un réglage d'histogramme interactif à droite).
Tout fonctionne très bien. Mais il y a un bug dont je n'arrive pas à me dépatouiller. La fenêtre centrale (celle où l'image est affichée) permet de zoomer/dezoomer en utilisant la molette de la souris (j'avais déjà posté une discussion ici qui n'est que partiellement résolue). Pour rendre actif le zoom/dezoom, la seule manière que j'ai trouvé, c'est d'invoquer un "SetFocus" lorsque la souris se trouve sur la fenêtre, autrement, le WM_MOUSEWHEEL n'est pas généré dans cette fenêtre.
Le problème est que lorsqu'une autre fenêtre flottante (de mon appli) se trouve au-dessus, il m'est impossible de retourner le focus à cette fenêtre qui est dessus. c'est très problématique car dans mon appli j'ai une petite fenêtre qui, lorsqu'elle est complètement inscrite dans la zone graphique, n'est plus activable et c'est assez pénible.
Lorsqu'une autre fenêtre d'une appli indépendante est par-dessus, il n'y a pas se problème: la fenêtre par dessus prend le focus dès que la souris passe dessus.
Pour illustrer, voici deux images où on voit la flèche jaune qui correspond à la position de mon pointeur souris. Lorsqu'il est sous la fenêtre (avec un bandeau rouge), celle-ci ne récupère pas le focus (comme j'ai expliqué, cette fenêtre est une sous fenêtre de mon appli, mais pas une fenêtre enfant de mon display graphique).
Voilà, merci d'avance pour tout commentaire/aide qui pourrait m'aider à régler ce bug.
Gorgo Treize.
PS: pour ceux qui se poseraient la question, les tracés de ligne anti-aliasées dans la fenêtre sont générés avec AGG (Anti Grain Geometry).
Partager