WIN32: Masquer/Afficher la barre de titre

Résolu
cyrtex Messages postés 3 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 1 octobre 2007 - 1 oct. 2007 à 14:01
cyrtex Messages postés 3 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 1 octobre 2007 - 1 oct. 2007 à 23:38
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

racpp Messages postés 1910 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 15
1 oct. 2007 à 18:50
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);
3
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
1 oct. 2007 à 18:38
Tu peux peut-être essayer en traitant WM_NCPAINT.
0
cyrtex Messages postés 3 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 1 octobre 2007
1 oct. 2007 à 23:38
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.
0