2012-09-20 2 views
1

Après avoir travaillé en C# pendant des années, je suis revenu à une ancienne application MFC que j'ai écrite. Mais il semble que j'ai besoin d'un rappel sur quelques points.Variable de boîte de dialogue - Aucune entrée ajoutée à DoDataExchange()

J'ai ajouté un contrôle case à cocher à une boîte de dialogue existante. J'ai ensuite utilisé Class Wizard pour ajouter une variable sans contrôle de type bool. La variable a été créée comme prévu.

Cependant, je ne vois aucune entrée a été ajoutée à la méthode DoDataExchange(). Et quand j'ai essayé d'ajouter manuellement:

DDX_Check(pDX, IDC_PRINT_SUMMARY, m_bPrintSummary); 

Je reçois l'erreur IntelliSense:

a reference of type "int &" (not const-qualified) cannot be initialized with a value of type "bool"

1. Pourquoi pas une entrée dans DoDataExchange() créé pour moi quand j'ai ajouté la variable?

2. Si DDX_Check() et attend int &, pourquoi la classe par défaut Wizards de type bool pour une valeur de case à cocher?

Répondre

2

Une case à cocher peut être l'une des trois valeurs, d'où la nécessité de l'int.

BST_CHECKED - Le bouton est coché.

BST_INDETERMINATE - Le bouton est grisé, indiquant un état indéterminé (s'applique uniquement si le bouton a le style BS_3STATE ou BS_AUTO3STATE).

BST_UNCHECKED - Bouton est effacé

Quant à savoir pourquoi il est pas automatiquement l'édition du DoDataExchange, il est probablement un problème avec le C++ formatage de votre classe.

+0

Alors, ma question est toujours la suivante: pourquoi la variable d'une case à cocher est-elle par défaut 'bool'? –

+0

C'est un bug. Je pense que c'était par défaut à BOOL, ce qui aurait bien fonctionné (si un peu trompeur). – snowdude

Questions connexes