Comment faire pour changer l'aparence d'une fenetre metal/non metal ?

veve

Membre enregistré
6 Mars 2004
4
0
47
Comment faire pour changer l'aparence d'une fenetre metal/non metal dans le code?
(desolé si la question a étè posée je n'ai pas reussi à la trouver)
 
Dans le code je sais pas, mais tu peux le changer dans Interface builder, dans les infos de ta fenetre tu as une case a coché.
 
Il faut initialiser la fenêtre avec le "styleMask" et les constantes voulues.

- (id)initWithContentRect:(NSRect)contentRect styleMask:(unsigned int)styleMask backing:(NSBackingStoreType)backingType defer:(BOOL)flag

Ici la constante est "NSTexturedBackgroundWindowMask"
Voir les autres constantes dans NSWindow...
 
mais ceci ne peut etre fait qu'au demarrage(initialisation de la fenetre) moi je voudrai pouvoir le faire a tout moment, par exemple en changeant un parametre dans les preference et que la modification s'aplique tout de suite.
Interface builder lui justement le fait encours d'execution en apuyant sur le bouton switch "Has texture".
 
Interface Builder "simule" l'affichage de la fenêtre, il n'affiche pas la "vraie" fenêtre. A ma connaissance, ce que tu veux faire n'est pas possible...
sick.gif
 
Le système ne permet pas de modifier dynamiquement ce paramètre. Il faut ruser.....par exemple pourquoi ne pas faire deux fichiers .nib de ta fenêtre ? L'un sans texturage, et l'autre avec. Ensuite tu permutes tes fichiers .nib selon ton choix.
 
et en utilisant une sous-classe (ou categorie) de NSWindow ? ou j'ajoute une methode pour modifier la variable responsable de l'apparence.
 
Tu peux faire autant de sous-classes de NSWindow que tu veux, ça ne t'avancera pas plus, puisque tu ne pourras toujours pas changer le styleMask de la fenêtre qui est défini lors de l'initialisation...
out.gif