cyrtex
Messages postés3Date d'inscriptionlundi 22 novembre 2004StatutMembreDernière intervention 1 octobre 2007
-
1 oct. 2007 à 14:01
cyrtex
Messages postés3Date d'inscriptionlundi 22 novembre 2004StatutMembreDerniè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.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 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);
cyrtex
Messages postés3Date d'inscriptionlundi 22 novembre 2004StatutMembreDerniè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.