Focus sur le pointeur de la souris

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 - 13 déc. 2007 à 23:42
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 - 15 déc. 2007 à 11:10
Bonjour à tous,

je cherche à supprimer la perte du focus sur le pointeur de ma souris. Je m'explique :

j'ai créé une mire RGB(objet image) dans un formulaire en VBA sous excel. Celle-ci permet de selectioner n'importe quelle couleur ( a la resolution de la mire pres). Cette mire fonctionne parfaitement.
Cette mire est utilisé pour choisir la couleur d'un objet dans une feuille excel, et ce dynamiquement. Autrement dit, la couleur de l'objet change lors du deplacement de la souris sur la mire (evenement Mouse_Move). La aussi pas de probleme ca marche.

Mon probleme,

est que lors du deplacement de la souris sur la mire, le pointeur de la souris definit comme suit:
Editeur.Mire.MoussePointer = fmMoussePointerCross

redevient la fleche par defaut de windows et scintille entre fleche et sablier.
Le principale probleme ici est que ce n'est pas tres beau.
Pour etre precis, ce probleme n'existe pas sans mise a jour dynamique c'est a dire quand on selectionne une couleur puis quelle est appliquée à l'objet apres coup.
j'ai essayé plusieurs chose comme de forcer windows a garder le focus sur mon formulaire via l'API :

Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

mais cela ne marche pas ou ne suffit pas

Ma conclusion jusqu'ici est que windows prend le focus car quelque chose passe par lui pour permetre la mise a jour de l'objet contenu dans la feuille. Je pense meme qu'il n'y pas d'autre choix et que la solution doit etre d'empecher windows de reprendre ce focus. J'ai donc chercher du coté des API souris mais sans succé. Je bloc !

Merci d'avance.

Philippe

PS je vie et travail aux US donc mes temps de reponses peuvent avoir 7h de decalage

1 réponse

us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
15 déc. 2007 à 11:10
Bonjour,

A priori, quand tu dis : "choisir la couleur d'un objet dans une feuille excel" ; c'est pas windows, mais Excel qui reprend la main... Donc VBA attends que la feuille soit mise à jour, ce qui met le pointeur en sablier, puis revient au formulaire sous VBA se qui remet le pointeur avec une Croix. D'où alternance, puisque tu fais ça en direct...

Première solution : Ne pas mettre en "Live" la couleur de l'objet, mais plutôt un petit carré de couleur sur ton formulaire... avant validation... c'est pas exactement ce que tu veux, mais serait suffisant, à mon avis.

Deuxième solution : Utiliser une API pour changer temporairement le pointeur sablier avec la croix. Ainsi le changement serait identique durant le choix. Bien remettre tout comme au début après choix. Mais c'est un peu barbare, comme solution...

Amicalement,
Us.
0
Rejoignez-nous