WIN32: Masquer/Afficher la barre de titre [Résolu]

Signaler
Messages postés
3
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
1 octobre 2007
-
Messages postés
3
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
1 octobre 2007
-
Bonjour,

Je cherche à masquer ou afficher la barre de titre d'une fenêtre Windows d'une application, à la suite d'un événement de type clavier ou clic de souris.
La gestion des evénements ne me pose pas de soucis, c'est la modification des attributs de ma fenêtre que je ne parviens pas à faire. J'ai essayé des fonctions du type GetWindowLong/SetWindowLong, mais sans succès.

Quelqu'un aurait-il une solution ?

Merci d'avance pour votre aide.
Cyd.

3 réponses

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
GetWindowLong() et SetWindowLong() ne suffisent pas pour changer l'apparence d'une fenêtre. Il faudra, en plus, utiliser SetWindowPos() avec le flag SWP_FRAMECHANGED pour que les changements soient appliqués immédiatement.
Exemple pour la barre de titre:
// Sauvegarder le style original:
LONG style=GetWindowLong(hwnd,GWL_STYLE);
// Retirer le style WS_CAPTION:
SetWindowLong(hwnd,GWL_STYLE,style & ~WS_CAPTION);
// Appliquer le changement:
SetWindowPos(hwnd,0,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);

Pour remettre le style original:
SetWindowLong(hwnd,GWL_STYLE,style );
SetWindowPos(hwnd,0,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
Tu peux peut-être essayer en traitant WM_NCPAINT.
Messages postés
3
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
1 octobre 2007

Merci beaucoup pour votre aide.
SetWindowPos est en effet la solution.
Comme je travaille sur un code commencé par d'autres, j'ai d'autres problèmes encore ailleurs.