Bonjour,
je place un control Text Editor (ou encore Static Text) sur mon UI.
Je souheterai sur un clic de bouton modifier le texte de ce control.
ça fait 2h que je galère et j'aurai vraiment besoin d'un coup de main.
Merci d'avance ;)
Version imprimable
Bonjour,
je place un control Text Editor (ou encore Static Text) sur mon UI.
Je souheterai sur un clic de bouton modifier le texte de ce control.
ça fait 2h que je galère et j'aurai vraiment besoin d'un coup de main.
Merci d'avance ;)
Le modifier dans l'éditeur ou dans le programme ?
Dans le programme, ça dépend selon que le TextEdit est mappé en tant que chaîne ou en tant que controle.
En tant que chaîne, on a un truc du genre:
Et en tant que contrôle, on a un truc du genre:Code:
1
2
3
4
5
6 TypeRetour CMonUI::OnBouton() { UpdateData(TRUE); m_edit1 = _T("Coucou"); UpdateData(FALSE); }
La méthode pour mapper un contrôle à une variable membre dépend de la version de Visual...Code:
1
2
3
4 TypeRetour CMonUI::OnBouton() { m_edit1.SetWindowText(_T("Coucou")); }
Quelle est la différence qu'il soit mappé en tant que chaine ou en tant que control finalement, si je veux uniquement modifier son texte ??
Par contre venant d'un monde C# où label.Text suffit ;), je voudrai savoir à quoi sert le defineque tu utilises ?Code:_T
Merci ;)
_T(), ça sert pour la compilation en mode Unicode.
En fait, sous Windows, chaque fonction existe en deux versions, char et wchar_t. Le type TCHAR est un type dépendant du mode. Ainsi, ces trois codes sont valides:
Généralement, il est conseillé d'utiliser le troisième code, car ainsi il suffit de changer une option dans le projet pour choisir d'utiliser la version char ou la version wchar_t.Code:
1
2
3 MessageBoxA(NULL, "Bonjour tout le monde!", "Msg", MB_OK); MessageBoxW(NULL, L"Bonjour tout le monde!", L"Msg", MB_OK); MessageBox(NULL, _T("Bonjour tout le monde!"), _T("Msg"), MB_OK);
Si tu regardes la déclaration de MessageBox, tu verras un truc de ce genre:
C'est pourquoi sous Windows quand le code est bien fait, pratiquement toutes les chaînes sont entourées de _T() ou TEXT() (c'est la même chose).Code:
1
2
3
4
5 #ifdef UNICODE #define MessageBox MessageBoxW #else #define MessageBox MessageBoxA #endif
Si tu enlèves le _T() pour une fonction normale de Windows, tu verras que selon le mode, tu devras mettre L devant la chaîne ou bien rien du tout.
Pour les CString, je ne crois pas, car la fonction est surchargée: Si on utilise le "mauvais" type de chaîne, la fonction convertira d'elle-même. Mais ça ralentira le programme, car si on met le "bon" type dès le début, pas besoin de convertir.
ok ;)
Merci pour tes réponses, g pu faire ce que je souhaitais.
A bientot :P et bonne journée
Bonjour,
désolé de déterrer un topic si vieux.
mais je voudrais savoir la méthode de changer le texte a l'aide du RAD de MFC
Élabore. J'ai du mal à comprendre la question...
désolé de ne pas être assez compréhensif.
je veux savoir comment changer le texte d'un Text Control (Static Text) sans passer par le code. càd en utlisant seulement l'editeur graphique fourni par MFC.
je sais qu'il y a du code qui s'ecrit en arriere plan pour cela mais je vois que c'est mieux de passer par l'editeur (puisqu'il est capable de le faire et j'en suis sûr -car je le faisais avant et c'est just que je me rappelle pas :aie:-)
et que c'est pas la peine d'ecrire du code just pour définir le texte d'un label.
C'est dans les propriétés dudit label. Cherche une propriété "caption" ou "text".