Bonjour,
J'ai fait un petit peu de C++, mais je n'y connais rien du tout, e je n'ai jamais fait de MFC, j'aimerais savoir comment faire pour permettre à un Static Text de prendre plusieurs lignes
Merci
Bonjour,
J'ai fait un petit peu de C++, mais je n'y connais rien du tout, e je n'ai jamais fait de MFC, j'aimerais savoir comment faire pour permettre à un Static Text de prendre plusieurs lignes
Merci
Je crois qu'il faut lui donner le style SS_MULTILINE.
Il doit y avoir une propriété correspondante dans les éditeurs graphiques de Visual (case à cocher sous Visual 6, champ dans la fenêtre Propriétés sous les versions supérieures)...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Ok, merci de ta réponse Médino, mais je suis sous Visual Studio 2005, j'ai dans la ToolBox, quand je choisi un Static Text, il n'y a pas ensuite dans les "properties"' de Multiline ou autre,...
Mais, je suis un vrai débutant, et peut-être n'ai-je pas compris ce que tu voulais dire par "donner le style Multiline", sinon, merci pour ta réponse,
et bonne journée !
N'as-tu pas une boîte dialogue avec divers onglets, dont "styles" et "extended styles" ?
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Non, dsl, je te fais une copie d'écran :
Lien image zippé
C'est certainement un truc tout bête, je suis dsl, mais j'ai vraiment besoin de savoir comment faire,...
Autre image plus explicite
Je peux me tromper, mais j'ai fait une nouvelle image de Visual Studio 2005, ou je vois les Properties disponibles quand je mets le focus sur ma StaticText, et je ne vois rien qui ressemble à un multiLigne,...
(Par la même occasion, je cherche également comment faire pour définir une Font et mettre une couleur avec le designer, même si c'est moins urgent,...)
as-tu essayé de passer des '\n' dans ton CStatic ?
ou même \r\n dans ta string
Raymond
Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi
CafuroCafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
e-verbeUn logiciel de conjugaison des verbes de la langue française.
Ma page personnelle sur DVP.
Oui, je l'ai fait, mais malheureusement, cela ne fonctionne pas,...
EDIT : Ha mince !
Je me suis trompé, le problème est plus compliqué que cela,...
Je m'explique : je reprends un projet développé par quelqu'un de bien plus compétant, cette reprise ne devant nécessité que peu, et même très peu de difficulté, et j'ai tout de même pas mal de problèmes,...
Dans le cas présent, le prblm est que pour remplir mon IStatEditor, auquel une variable de type :a été attribué, le prog fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ns_mfc_ex::CStaticEx c_IsoS;
Ou :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SetUpStatic ( c_IsoS, 147 );
Et, avec cette manière d'opérer, j'ai beau mettre des \n et des \r dans ma string, il me les affiche tranquillement comme si de rien n'était, alors que si je mets simplement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void NomClasse::SetUpStatic ( ns_mfc_ex::CStaticEx &Ctrl, unsigned long iLabel ) { Ctrl.SetFont ( &m_FontLabel, TRUE ); Ctrl.SetWindowText ( ns_mfc_ex::CStringEx ( iLabel )); }
, je n'ai aucun problème,...
Code : Sélectionner tout - Visualiser dans une fenêtre à part c_IsoS.SetWindowText("test \n\r test");
Personnellement je te conseillerai d'oublier ces CStatic et de directement gérer ton texte dans un ou plusieurs CString que tu afficheras à l'aide de DrawText
C'est sûr que c'est moins assisté, mais au moins tu as la main sur ce que tu fais.
Bon, là, je ne sais pas si qui que ce soit d'autre que le développeur du composant ns_mfc_ex::CStringEx qui puisse m'aider, et je n'ai pas les sources de ce composant,...
J'ai changé un peu le code, en passant d'abord par un CString, de sorte que cela fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 void CPage01::SetUpStatic ( ns_mfc_ex::CStaticEx &Ctrl, unsigned long iLabel ) { Ctrl.SetFont ( &m_FontLabel, TRUE ); CString st = ns_mfc_ex::CStringEx ( iLabel ); Ctrl.SetWindowText ( st); }
Et, alors que le CString a la bonne valeur, avec un beau '\n', rien n'y fait, il me l'affiche comme si c'était un caractère normal,...
EDIT: TheGzD, j'aimerais pouvoir suivre ton conseil, seulement, je ne peux pas vraiment, je dois juste faire des modifs sur le projet, mais je trouve haïssable de ne pas avoir la main sur ce que l'on fait,...
nativement, le controle static est multiline
la seule explication que j'ai, c'est que ton controle CStaticEx se dessine lui meme et ne prend pas en charge le multiline ...
repasse sur un CStatic normal, ou recuperes le source de CStaticEx
@+
Ah, je viens de voir en effet qu'il n'y a pas de propriété MultiLine, j'ai confondu avec les EditBoxes.
Simplement, il faut s'assurer que le contrôle n'ait pas le style SS_SIMPLE (propriété "Simple").
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
La propriété Simple du Control est bien à false ici, mais ça ne change rien, il considère toujours mon \n comme un caractère normal,...
Merci quand même !
Utilisez l'utilitaire Spy++ pour connaître les propriétés de votre contrôle "en live"
Merci bacelar pour m'avoir appris cette utilisation de Spy++, je ne savais pas.
Malheureusement, j'ai vérifié en mettant le curseur sur mon IStatic, et ça me montre qu'il n'y a pas de Syles, ni d'Extended Styles qui ressemble à un Simple, ce qui correspond bien à ce que j'ai dans mon designer sous Visual,...
@TheGzD, désolé, j'avais mal écrit, j'ai édité entre temps, je voulais dire que ma propriété Simple était bien à False, et malgré cela, je me retrouve avec cette image :
image avec un \n dans mon CStatic avec Simple à false
Mais, de toute manière, si dans mon code je fais ceci (ou c_IsoS est le contrôle associé à mon CStatic):
Là, ça se passe très bien, aucun problème, mes lignes sont bien sautées,...
Code : Sélectionner tout - Visualiser dans une fenêtre à part c_IsoS.SetWindowText("Montexte avec des \n,...");
Mais par contre, si je fais :
ou SetUpStatic =
Code : Sélectionner tout - Visualiser dans une fenêtre à part SetUpStatic ( c_IsoS, 147 );
Là, c'est mort, et ça ne vient pas du CString, puisque si j'initialise le CString avec un truc comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 void MaClasse::SetUpStatic ( ns_mfc_ex::CStaticEx &Ctrl, unsigned long iLabel ) { Ctrl.SetFont ( &m_FontLabel, TRUE ); CString st = ns_mfc_ex::CStringEx ( iLabel ); // ici, st a bien des \n normaux,... Ctrl.SetWindowText ( st); }Je n'ai aucun problème non plus, je ne sais aps ce que fait la classe ns_mfc_ex::CStringEx, mais visiblement elle empêche le CString de considérer les \n pour des retours chariots, c'est très perturbant,...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 st= "test \n test"; Ctrl.SetWindowText(st);
OK, c'est résolu, le précédent développeur, un gars très sympa, a été contacté et a accepté de nous passer une nouvelle classe, qui accepte le multiligne, désolé du dérangement, mais je voulais être sûr que le problème venait du composant et pas de ma manière de programmer,...
Partager