Page 1 sur 1

[R] Splash dans WM_NOTIFY

Posté : mar. 16 déc. 2014 14:10
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.
 

Re: [..] Splash dans WM_NOTIFY

Posté : mar. 16 déc. 2014 16:26
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

Re: [..] Splash dans WM_NOTIFY

Posté : mar. 16 déc. 2014 16:38
par aulus
Le Sleep est effectivement la solution... Grand merci Hugues !

Re: [R] Splash dans WM_NOTIFY

Posté : mar. 16 déc. 2014 19:08
par TommyDDR
Votre temps de traitement est long et vous y ajoutez un sleep ? :roll:

Re: [R] Splash dans WM_NOTIFY

Posté : mar. 16 déc. 2014 19:36
par aulus
Ch'sais bien mais sinon pas d'affichage ! J'ai limité l'attente à 1 s.

Re: [R] Splash dans WM_NOTIFY

Posté : mar. 16 déc. 2014 23:35
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)

Re: [R] Splash dans WM_NOTIFY

Posté : mer. 17 déc. 2014 08:22
par Hugues
Tu n'es pas obligé de mettre 1s, tu peux mettre moins...

Sleep(150) devrait suffire.

Re: [R] Splash dans WM_NOTIFY

Posté : mer. 17 déc. 2014 09:19
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.