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
Version imprimable
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)...
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" ?
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
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:ns_mfc_ex::CStaticEx c_IsoS;
Ou :Code: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:
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: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:
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").
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:c_IsoS.SetWindowText("Montexte avec des \n,...");
Mais par contre, si je fais :
ou SetUpStatic =Code: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:
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:
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,...