2009-10-05 8 views
0

Bonjour, je viens de commencer à utiliser C++ aujourd'hui, et je travaille sur des cases à cocher. J'ai essayé d'utiliser CheckBox1->Checked dans une instruction if ou autre, mais cela ne fonctionne pas.Erreur lors de l'appel de la fonction membre

L'erreur est:

Erreur 2 Erreur C2227: gauche '-> checked' doit indiquer la classe/struct/union/type générique

EDIT: Le code est :

void function() 
{ 
if (1001->Checked) 
{ 
      Sleep(2000); 
} 
} 
+0

Avez-vous essayé de lire réellement la documentation de tout ce que vous essayez de travailler? (MFC?) – shoosh

+0

Veuillez publier du code et indiquer également le framework GUI avec lequel vous essayez de travailler. –

+0

J'ai essayé Win32 et MFC. – Brandon

Répondre

5

Sans voir une partie de votre code, il est très difficile d'offrir une assistance ciblée. Toutefois, ce message d'erreur apparaît généralement parce que l'élément que vous décrierez n'est pas un pointeur.

Assurez-vous que le type est correct. Il devrait être quelque chose le long des lignes de:

tCheckBox *CheckBox1; 

Une possibilité est que vous avez déclaré non pas comme un pointeur sur la case à cocher mais comme une case à cocher lui-même:

tCheckBox CheckBox1; 

Notez le manque de astérisque là qui le marquerait autrement comme un pointeur. Dans ce cas, vous utiliserez CheckBox1.Checked plutôt que CheckBox1->Checked, si cela est autorisé par le framework (ce n'est pas du C++ standard puisque cette bête n'a pas de concept de bibliothèque GUI).

Si cela ne vous aide pas, veuillez poster le code afin que nous puissions vous donner de meilleures suggestions.

Update:

if (1001->Checked) ????? 

1001 est pas un pointeur - il est pas une variable d'une description, il est un nombre entier constant.

Vous devez déclarer et utiliser une variable de quelque description. La première étape est, je pense, de lire la documentation de votre framework et/ou d'obtenir un exemple de code qui compile et fonctionne, en basant votre travail initial sur ce sujet.

+0

Je suppose que 1001 est la ressource IDC du contrôle dans MFC. –

1

Utilisez CButton::GetCheck() pour déterminer l'état de la case à cocher - comme si ...

CButton* pButton = (CButton*) GetDlgItem(IDC_CHECKBOX_RESOURCE_ID); 

if (BST_CHECKED == pButton->GetCheck()) 
{ 
    // button is checked 
} 
+0

L'un des points faibles de MFC est qu'il ne connaît pas le type d'une fenêtre. Vous devez convertir les résultats de GetDlgItem en CButton *, car sinon, il ne l'affectera pas à un pointeur de bouton. –

+0

Oui, je savais que j'oubliais quelque chose. Merci. – mocj

Questions connexes