[R] Splash dans WM_NOTIFY

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
aulus
Niveau 7
Niveau 7
Messages : 424
Enregistré le : lun. 25 mars 2013 19:38
Status : Hors ligne

[R] Splash dans WM_NOTIFY

#1

Message par aulus »

Bonjour,

Je tente d'afficher un SplashText dans la fonction WM_NOTIFY dans l'intention de faire patienter l'utilisateur pendant le tri d'une ListView. Celle-ci s'affiche bien, mais elle est vide de tout message.
Voulant contourner ce dysfonctionnement, j'ai tenté de créer une GUI contenant un label dans la fonction WM_NOTIFY. Même résultat : la GUI s'affiche mais le label ne s'affiche pas. Cela n'est-il pas possible ?

Code SplashText :

Code : Tout sélectionner

Switch $hWndFrom
        Case GUICtrlGetHandle($myListView)
            Switch $iCode
                Case $LVN_COLUMNCLICK ; A column was clicked
                    SplashTextOn("", "Tri en cours..." & @CRLF & "Merci de patienter...", 300, 55, -1, -1, 49)
                                       $tInfo = DllStructCreate($tagNMLISTVIEW, $iLparam)
                                       Local $ColumnSorted = DllStructGetData($tInfo, 'SubItem')
                                       If $ColumnSortedPrev <> $ColumnSorted Then
                                       etc.
 
Code GUI :

Code : Tout sélectionner

Switch $hWndFrom
        Case GUICtrlGetHandle($myListView)
            Switch $iCode
                Case $LVN_COLUMNCLICK ; A column was clicked
                    $GUIsplash = GUICreate("Tri en cours...", 350, 50, (@DesktopWidth / 2) - (300 / 2), (@DesktopHeight / 2) - (50 / 2))
                    $LABELsplash = GUICtrlCreateLabel("Merci de patienter...",20,10,320,20)
                    GUISetState(@SW_SHOW)
                    $tInfo = DllStructCreate($tagNMLISTVIEW, $iLparam)
                    Local $ColumnSorted = DllStructGetData($tInfo, 'SubItem')
                    If $ColumnSortedPrev <> $ColumnSorted Then
                    etc.
 
Modifié en dernier par aulus le mar. 16 déc. 2014 16:39, modifié 1 fois.
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

Re: [..] Splash dans WM_NOTIFY

#2

Message par Hugues »

Salut,

Peut-être parce que le temps de traitement est trop rapide... Si tu mets un Sleep(3000) après ton SplashTestOn, ton message s'affiche....

Sinon utilises le TrayTip.
► Afficher le texte
aulus
Niveau 7
Niveau 7
Messages : 424
Enregistré le : lun. 25 mars 2013 19:38
Status : Hors ligne

Re: [..] Splash dans WM_NOTIFY

#3

Message par aulus »

Le Sleep est effectivement la solution... Grand merci Hugues !
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2127
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [R] Splash dans WM_NOTIFY

#4

Message par TommyDDR »

Votre temps de traitement est long et vous y ajoutez un sleep ? :roll:
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
aulus
Niveau 7
Niveau 7
Messages : 424
Enregistré le : lun. 25 mars 2013 19:38
Status : Hors ligne

Re: [R] Splash dans WM_NOTIFY

#5

Message par aulus »

Ch'sais bien mais sinon pas d'affichage ! J'ai limité l'attente à 1 s.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2127
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [R] Splash dans WM_NOTIFY

#6

Message par TommyDDR »

Dans le cas d'une gui perso (non splash) avez vous essayé de forcer la fenêtre à se redessiner ?

Code : Tout sélectionner

_WinAPI_RedrawWindow($gui)
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

Re: [R] Splash dans WM_NOTIFY

#7

Message par Hugues »

Tu n'es pas obligé de mettre 1s, tu peux mettre moins...

Sleep(150) devrait suffire.
aulus
Niveau 7
Niveau 7
Messages : 424
Enregistré le : lun. 25 mars 2013 19:38
Status : Hors ligne

Re: [R] Splash dans WM_NOTIFY

#8

Message par aulus »

TommyDDR a écrit :Dans le cas d'une gui perso (non splash) avez vous essayé de forcer la fenêtre à se redessiner ?

Code : Tout sélectionner

_WinAPI_RedrawWindow($gui)
J'ai essayé cette fonction. Mais sans succès : mon programme plante.
J'ai diminué le temps d'attente comme me le suggère Hugues.
Merci à tous deux.
Répondre