|
Menu Système |
|
Utilisateur WDF
Inscrit: 10/02/2005 16:33
Post(s): 67
|
Bonjour,
Je voudrais savoir comment faire pour désactiver l'option menu système dans une fenêtre fille! Je vois bien l'option dans le style de la fenêtre mais elle est grisée et inaccessible!
Merci d'avance de votre aide!!
Contribution le : 22/02/2005 12:10
|
|
|
Re: Menu Système |
|
Animateur WDF
Inscrit: 02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
|
Bonjour, Transcription d'un code trouvé en vb Dans l'initialisation de la classe ou du projet, déclaration des constantes
GLOBAL
CONSTANTE
GWL_STYLE = (-16)
MF_BYCOMMAND = 0
MF_BYPOSITION = 0x400
SC_MINIMIZE = 0xF020
SC_MAXIMIZE = 0xF030
SC_CLOSE = 6
WS_MAXIMIZEBOX = 0x10000
WS_MINIMIZEBOX = 0x20000
FIN
Procédure ou méthode pour griser le bouton X
PROCEDURE No_X(phWndFenetre est un entier)
//Désactiver X
hMenu, k sont des entiers
hMenu = API("user32","GetSystemMenu",phWndFenetre, Faux)
k = API("user32","DeleteMenu",hMenu, SC_CLOSE, MF_BYPOSITION)
Procédure ou méthode pour griser le bouton Min
PROCEDURE No_Min(phWndFenetre est un entier)
//Désactiver 'minimiser'
hMenu, k sont des entiers
hMenu = API("user32","GetSystemMenu",phWndFenetre, False)
k = API("user32","DeleteMenu",hMenu, SC_MINIMIZE, MF_BYCOMMAND)
k = API("user32","GetWindowLongA",phWndFenetre, GWL_STYLE)
k = OUExclusifBinaire(k, WS_MINIMIZEBOX)
API("user32","SetWindowLongA", phWndFenetre, GWL_STYLE, k)
Procédure ou méthode pour griser le bouton Max
//Désactiver 'maximiser'
hMenu, k sont des entiers
hMenu = API("user32","GetSystemMenu",phWndFenetre, False)
k = API("user32","DeleteMenu",hMenu, SC_MAXIMIZE, MF_BYCOMMAND)
k = API("user32","GetWindowLongA", phWndFenetre, GWL_STYLE)
k = OUExclusifBinaire(k, WS_MAXIMIZEBOX)
API("user32","SetWindowLongA", phWndFenetre, GWL_STYLE, k)
Contribution le : 22/02/2005 14:41
|
|
|
Re: Menu Système |
|
Utilisateur WDF
Inscrit: 10/02/2005 16:33
Post(s): 67
|
Bonjour! Enfin re
J'ai bien copié le tout dans le code d'initialisation de mon projet et pour les procédures dans la partie procédure globale
J'imagine que la variable phWndFenetre correspond au Handle() de la fenêtre, donc à l'initialisation de la fenêtre fille que je cherche à bloquer j'ai rentré ceci: No_Min(Handle())
Cependant, les boutons ne sont toujours pas bloqués... Me suis-je loupé quelques part?
Merci en tout cas, pour la réactivité c'est cool
Contribution le : 22/02/2005 17:00
|
|
|
Re: Menu Système |
|
Anonyme
|
Salut ! J'ai testé !! le code fonctionne parfaitement pour une fenêre qui n'est pas ouverte comme fille MDI, mais ne marche pas quand elle est ouverte en fille MDI. Le solution est à chercher chez PC Soft, voilà pourquoi il apparait grisé en fille MDI l'option d'afficher ou pas le menu SYS... vraiment too BAD. Impossible donc A+
Contribution le : 23/02/2005 13:29
|
|
|
Re: Menu Système |
|
Animateur WDF
Inscrit: 02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
|
Bonjour, les constantes sont à mettre par exemple dans le code d'initialisation du projet ou bien meme afin que cela soit moins lourd les transformer en variables locales et les inclures dans les procédures. pour que le code fonctionne il faut que les procédures soit appelées juste après la fonction d'ouverture de la fenetre fille Exemple dans le code du bouton cmdOuvreFille j'appele ma fenetre frmFille qui est une fenetre fille
OuvreFille(frmFille)
no_X(Handle(frmFille))
no_Max(Handle(frmFille))
no_Min(Handle(frmFille))
Ce code a été testé et fonctionne correctement depuis une fenetre mdimere qui appel une fenetre mdifille Les boutons après appel de ces fonctions sont inactifs et grisés
Contribution le : 23/02/2005 14:49
|
|
|
Re: Menu Système |
|
Utilisateur WDF
Inscrit: 10/02/2005 16:33
Post(s): 67
|
J'ai fait exactement cela, sauf que j'ai rajouté l'appel de la procédure non plus dans l'initialisation de la fenêtre fille mais jusqte après l'appel d'ouverture (comme le dis dcharly93) mais rien à faire, ça ne marche pas....
Merci quand même de l'aide =)
Contribution le : 24/02/2005 09:08
|
|
|
Re: Menu Système |
|
Utilisateur WDF
Inscrit: 10/02/2005 16:33
Post(s): 67
|
J'ai parlé trop vite!!
Je viens de comprendre pourquoi cela ne marchait pas hihi En fait, la fenêtre fille dans sa description, j'ai mis "Maximiser à l'ouverture" quand je la réduit et que je clique sur sa barre système (celle de la fille j'entend) efectivement là! les boutons appraissent bien en grisé. Mais lorsqu'elle est aggrandit au maximum les procédures sembles ne plus marcher....
Enfin ça ne résout pas mon problème... Mais merci de votre aide malgré tout!
Ps: Sur le forum de pcsoft c'est moi François lol
Contribution le : 24/02/2005 09:28
|
|
|
Re: Menu Système |
|
Animateur WDF
Inscrit: 02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
|
Merci de vous identifier Francois,
J'ai donc regarder le problème et vous propose : solution ouvrez votre fenetre sans la maximiser appliquer les méthode pour rendre les boutons invisibles puis utiliser la fonction maximise(frmFille) pour maximiser la fenetre ainsi les boutons seront invisibles.
Contribution le : 24/02/2005 10:22
|
|
|
Re: Menu Système |
|
Utilisateur WDF
Inscrit: 10/02/2005 16:33
Post(s): 67
|
De rien ^^ En fait, faudrait que je recrée mon profil hihi
J'ai déjà fait cela, mais dès que je maximise la fenêtre les boutons redeviennent actifs. Et quand je la réduit ils deviennent inactif...
Contribution le : 24/02/2005 10:40
|
|
Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.
|
Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
|