|
PROFESSIONAL NEWSGROUPS WINDEV, WEBDEV and WINDEV Mobile |
| | | | | |
évènements minimiser fenêtre |
Started by pgendron, Apr., 25 2006 11:58 PM - 4 replies |
| |
| | | |
|
| |
Posted on April, 25 2006 - 11:58 PM |
Bonjour,
est-il possible d'ajouter un évènement lorsque l'utilisateur clique sur le bouton pour minimiser la fenêtre... je ne veux pas utiliser la fonction "modification taille fenêtre", car elle se déclanche lorsque l'utilisiteur restaure la fenêtre également.
merci ! |
| |
| |
| | | |
|
| | |
| |
Posted on April, 26 2006 - 10:51 AM |
Salut,
il n'y a pas d'événement qui gère cela directement.
Voici une solution: Tu dois surclasser la fenêtre.
Voici comment faire:
//--Code de déclarations globales de ta fenêtre-- EXTERN "WinConst.wl" CONSTANTE GWL_WNDPROC = -4 SC_MINIMIZE = 0xF020 FIN //modification de la procedure par défaut defWindowProc est un entier defWindowProc = API("user32","SetWindowLongA",Handle(MaFenêtre),GWL_WNDPROC,&MaProcedure)
//--Code de fermeture de ta fenêtre-- //restauration de la procedure par défaut SI defWindowProc <> 0ALORS API("user32","SetWindowLongA",Handle(MaFenêtre),GWL_WNDPROC,defWindowProc) defWindowProc = 0 FIN
//--Fonction locale MaProcedure-- PROCEDURE MaProcedure(hwnd,uMsg,wParam,lParam) iRetour est un entier = -1 SI hwnd = Handle(MaFenêtre) ALORS SI uMsg = WM_SYSCOMMAND ALORS SI wParam = SC_MINIMIZE ALORS Info("min") //Ceci permet d'annuler le clic sur le bouton minimiser iRetour = 0 FIN FIN FIN SI iRetour = -1 ALORS //Appel de la procedure normale iRetour = API("user32","CallWindowProcA",defWindowProc,hwnd,uMsg,wParam,lParam) FIN RENVOYER iRetour
La fonction MaProcedure te permet de décider ce qui arrivera lors d'un clic sur le bouton minimiser. Si la valeur retournée par la procédure est 0, la procédure normale d'un clic sur le bouton minimiser ne sera pas effectuée.
Mathieu |
| |
| |
| | | |
|
| | |
| |
Posted on April, 26 2006 - 10:52 AM |
Tout d'abord déclarer les constantes
//Specifies the type of resizing requested. This parameter can be one of the following values. CONSTANT SIZE_MAXHIDE= 0x0004 //Message is sent to all pop-up windows when some other window is maximized. SIZE_MAXIMIZED = 0x0003 //The window has been maximized. SIZE_MAXSHOW = 0x0002 //Message is sent to all pop-up windows when some other window has been restored to its former size. SIZE_MINIMIZED = 0x0001 //The window has been minimized. SIZE_RESTORED = 0x0000 //The window has been resized, but neither the SIZE_MINIMIZED nor SIZE_MAXIMIZED value applies.
//lParam //The low-order word of lParam specifies the new width of the client area. //The high-order word of lParam specifies the new height of the client area. FIN
Ensuite dans le code de déclaration des globales appeler la fonction sur evenemet
Evénement("ON_WM_SIZE", "*.", WM_SIZE)
puis créer la fonction ON_WM_SIZE
PROCEDURE ON_WM_SIZE(message,wParam,lParam)
SELON wParam //Specifies the type of resizing requested. This parameter can be one of the following values. CAS SIZE_MAXHIDE // ( 4 ou 0x0004 ) //Message is sent to all pop-up windows when some other window is maximized. Trace("SIZE_MAXHIDE largeur : "+PoidsFaible(lParam)+" Hauteur : "+PoidsFort(lParam))
CAS SIZE_MAXIMIZED // ( 3 ou 0x0003 ) //The window has been maximized. ( CLICK SUR LE BOUTON D'AGRANDISSEMENT MAXI bouton de droite ) Trace("SIZE_MAXIMIZED largeur : "+PoidsFaible(lParam)+" Hauteur : "+PoidsFort(lParam))
CAS SIZE_MAXSHOW //( 2 ou 0x0002 ) //Message is sent to all pop-up windows when some other window has been restored to its former size. Trace("SIZE_MAXSHOW largeur : "+PoidsFaible(lParam)+" Hauteur : "+PoidsFort(lParam))
// // MINIMISER C ICI // CAS SIZE_MINIMIZED // ( 1 ou 0x0001 ) //The window has been minimized. ( CLIC SUR LE BOUTON DE REDUCTION bouton de gauche) Trace("SIZE_MINIMIZED largeur : "+PoidsFaible(lParam)+" Hauteur : "+PoidsFort(lParam))
// ICI PoidsFaible(lParam) est toujours égal à 0 et PoidsFort(lParam)<=0 // j'ai toujours PoidsFort(lParam)=0 en MDI et PoidsFort(lParam) =-24 sans MDI
// //
CAS SIZE_RESTORED // ( 0 ou 0x0000 ) //Changemet de taille manuel ( coin droite bas ) ou restoration de la taille bouton du milieu . Trace("SIZE_RESTORED largeur : "+PoidsFaible(lParam)+" Hauteur : "+PoidsFort(lParam))
//lParam //The low-order word of lParam specifies the new width of the client area. //The high-order word of lParam specifies the new height of the client area. AUTRE CAS FIN
bon Wdev
patrice |
| |
| |
| | | |
|
| | |
| |
Posted on April, 26 2006 - 2:56 PM |
Peut-être plus simple. Possibilité 1:Avec l'événement resize. SI tu teste l'état de ta fenêtre, tu sauras si l'action était un minimize. Possibilité 2. Tu te crées un bouton minimise et maximise, comme dans l'exemple de Windev CRM. Michel, Montréal |
| |
| |
| | | |
|
| | |
| |
Posted on April, 26 2006 - 6:46 PM |
Merci Patrice...
c'est ton exemple que j'utilise et ça fonctionne à merveille !
Paul |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|