SagePourpre a écrit :Une version de ton code à jour afin qu'on puisse constater tout ça par nous même pourrait aider à
visualiser le problème et à possiblement trouver une solution.
J'ai trouvé la solution en fait : il suffit de retarder la mise à jour graphique pour la lancer au moment où la fenêtre quitte son état iconisé.
La fonction winwaitactive est intéressante si on ne fait rien de spécial en attendant le retour en mode fenêtre, mais ça n'est pas mon cas : je dois gérer les modifs du presse-papier même si la fenetre est iconisée ou fermée.
Une partie de mon code tourne déja dans une boucle while 1 / wend
Voici la portion de code que j'ai rajouté dans cette boucle et qui s'occupe du rafraichissement:
► Afficher le texte
Code : Tout sélectionner
;
; gestion de la fenetre : suivi de son iconisation et de sa position.
;
If $GUI_FENETRE <> "" Then
$BIDON = WinGetState($GUI_FENETRE)
$ICONISEE = BitAND($BIDON, 16) ; WINMOVE NE FONCTIONNE PAS SUR FENETRE MINIMISEE...
; on detecte quand la fenetre sort d'une iconisation précédente.
If ($MEMO_ICONISATION) and Not($ICONISEE) Then
; réactualisation du contenu
gui_refresh_items()
$MEMO_ICONISATION=0
EndIf
If $ICONISEE Then $MEMO_ICONISATION=1
; actualisation de la mémorisation de sa position
$ACTU_POSGUI = WinGetPos($GUI_FENETRE)
If @error = 0 Then
If $ACTU_POSGUI[0] > 0 Then
$MEMO_POSGUI = $ACTU_POSGUI
ElseIf $ACTU_POSGUI[0] < 0 Then
;; _ArrayDisplay($ACTU_POSGUI,"Erreur interne calcpos1/gui_clic_close")
EndIf
Else
;; _ArrayDisplay($ACTU_POSGUI,"Erreur interne calcpos2/gui_clic_close")
EndIf
Le programme fonctionne très bien, mais il est associé à un contexte bien particulier ce qui m'empêche de divulguer le code source tel quel : le programme deviendrait un "simple" divulgateur de presse-papier...
Je vais réfléchir à un moyen de le publier avec un système de contexte neutre.