Re: Iconisation, systray et cie...

Posté par thernius le 17/9/2004 10:00:03
Retour sur expérience :

Pour envoyer une fenêtre dans le 'systray' et la ramener grâce à un double-clic gauche, voici une procédure fonctionnelle (WD8 80315p + Windows XP SP2).

Dans les déclarations globales de la fenêtre à 'iconiser' :

// Déclaration du booléen d'état d'iconisation
fg_bIconise est un booléen = Faux

//Déclenchement de l'interception de l'iconisation de la fenêtre
Evénement("PRO_ICONIZE", "*.*", 274)


ensuite dans l'évènement 'Modification de la taille de ' :

eFenetreTaille est un entier

// Récupération de la taille de la fenêtre (mini, maxi,...)
eFenetreTaille = FenTaille(<FenêtreNom>)

SI eFenetreTaille=TailleMini ALORS // eFenetreTaille = 1
	<FenêtreNom>..Visible=PAS <FenêtreNom>..Visible
FIN


il faut maintenant écrire la procédure locale permettant de traiter l'iconisation de la fenêtre par le bouton système (-) :

PROCEDURE PRO_ICONIZE(pMessage, wParam, lParam )
SELON wParam
	CAS 61536 //Fermeture
	Info("Vous avez demandé la fermeture de la fenêtre")
		
	// Seul ce cas nous intéresse ici...
        CAS 61472 //Iconise
	SysIconeAjoute("<IcôneNom>",systray,"bla bla...","SystrayGère")	
		
	CAS 61488 //Maximise
	Info("Vous avez demandé de maximiser la fenêtre")
FIN


enfin pour finir, il faut déclarer la procédure locale 'SystrayGère' :
PROCEDURE SystrayGère(action)
SELON action
    CAS 515 // Double clic gauche
    // Gérer l'iconisation
    fg_bIconise = Faux
    
    // Supprimer l'icône dans le systray
    SysIconeSupprime()
		
    // Rendre à nouveau visible la fenêtre
    <FenêtreNom>..Visible=Vrai
		
    // et lui rendre sa taille initiale
    FenTaille(<FenêtreNom>, TailleNormale)
FIN


Je tiens à remercier DrCharly, R&B et Bassy pour leurs contributions.

PS : Prévenez moi de tout oubli éventuel...

Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=12&topic_id=1303&post_id=5350