2 votes

Les champs de texte entiers de C++ MFC sont-ils toujours définis à 0?

Je crée un formulaire de préférences en VC++ MFC, et j'ai plusieurs champs de texte qui n'acceptent que des entiers. Je suis nouveau dans MFC, c'est donc ainsi que j'ai trouvé comment les initialiser dans un tutoriel :

CProgramDlg::CProgramDlg(CWnd* pParent /*=NULL*/)
: CDialog(CProgramDlg::IDD, pParent)
, m_nSampleValue1()
, m_nSampleValue2() ... m_nSampleValueN {}

C'est génial et tout, mais quand je le lance, tous les champs de texte sont remplis de zéros. Je sais qu'avec les chaînes de caractères, vous pouvez simplement envoyer "" et cela effacera le champ de texte, mais j'ai essayé NULL pour mes entiers et je n'ai pas eu de chance.

Y a-t-il un truc pour que les champs de texte restent simplement vides sans afficher de zéros? Merci pour votre aide!

3voto

Nawaz Points 148870

m_nSampleValue1() et m_nSampleValue2() sont initialisés avec des valeurs. S'il s'agit de types primitifs, cela signifie qu'ils seront initialisés à zéro.

Y a-t-il un astuce pour que les zones de texte soient vides sans afficher de 0 ?

S'il s'agit d'un type intégral, je pense que ce n'est pas possible sans modifier une autre partie du code (quelle partie ? vous ne l'avez pas postée ici). Si vous ne voulez pas le faire, ou si c'est difficile à faire, vous pouvez changer le type des membres en chaîne de caractères, ils seront alors automatiquement des chaînes vides.


Cependant, si vous voulez voir des valeurs non nulles, faites ceci :

CProgramDlg::CProgramDlg(CWnd* pParent /*=NULL*/)
: CDialog(CProgramDlg::IDD, pParent)
, m_nSampleValue1(100)
, m_nSampleValue2(200) ... m_nSampleValueN(1000) {}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X