bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 2013
-
13 déc. 2007 à 23:42
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 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
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 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...