Wo ist die "checked"-Option bei RadioButtons in Visual C++?
-
Hier noch mal das Beispiel aus dem MSDN:
CButton myButton; myButton.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_AUTO3STATE, CRect(10,10,100,30), pParentWnd, 1); myButton.SetCheck( BST_INDETERMINATE );Links von SetCheck(...) vor dem verbindenden Punkt befindet sich ein Objekt der MFC-Klasse CButton.
-
naja, ich hab halt einfach den RadioButton auf das Dialogfeld gesetzt und ihn IDC_RADIO1 genannt. Wenn ich dann statt myButton die ID eingebe geht es nicht.
-
Das läuft so nicht! Die ID ist einfach nur eine Zahl, schau mal in resource.h, da findest Du diese Zahl, also kein Objekt vom Typ CButton! Verwende CWnd::GetDlgItem
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_mfc_CWnd.3a3a.GetDlgItem.asp
Das liefert Dir einen Zeiger auf Dein Control, den Du dann mittels Pfeil(!) auf SetCheck(...) anwenden kannst:GetDlgItem(IDC_RADIO1)->SetCheck(...);
-
Dann kommt:
'SetCheck': Ist kein Element von 'CWnd'
-
Du must noch auf deinen RadioButton casten.
-
Sorry, aber da ich erst ganz am Anfang stehe is mir das noch zu hoch.
Was meinst du genau?Und warum kann man das nicht einfach im Eigenschaftenfenster einstellen?
-
So also das man das nicht im Einstellungsfenster machen kann, ist halt so^^ Beschwerden bitte an Microsoft senden ... .
Zu der anderen Frage: in der MFC arbeitet man mit Ressourcen. Jede Ressource bekommt eine ID, also bekommt auch deine Checkbox eine ID. Ist halt einfach ne eindeutige Nummer. Und weil es nur ne Nummer ist, kann man darauf natürlich keine Methoden anwenden. Dazu braucht man ne Klasse.
Jetzt gibt es 2 Möglichkeiten.
Du kannst im Dialog-editier-Feld Rechtsklick auf deine Checkbox machen und Variable hinzufügen. Entweder erstellst du eine Controlvariable, dann kannst du mit SetCheck den gewünschten Zustand einstellen, oder du erstellst eine Wertvariable. Diese ist dann vom Typ bool. Dann brauchst du aber die Funktion UpdateData, um die Checkbix zu beeinflussen.
Zweite Möglichkeit ist dann die schon erwähnte. Da die IDs ja eindeutig vergeben werden, kann man anhand der ID auf die Ressource schließen. Das macht GetDlgItem. Diese Methode liefert dir aber einen Zeiger auf ein CWnd-Objekt, also auf ein allgemeines Fenster.
Du weist aber, dass dein allgemeines Fenster eine Checkbox ist. Daher musst du einen DownCast machen und dann kommst du auch an die gewünschte Methode ran.
Aber einfacher ist wohl wie drüber beschrieben vom Assistenten ne Variable erstellen zu lassen.
-

-
((CButton*)GetDlgItem(IDC_RADIO1))->SetCheck(BST_INDETERMINATE);
-
(D)Evil schrieb:
((CButton*)GetDlgItem(IDC_RADIO1))->SetCheck(BST_INDETERMINATE);Na kar, das wichtigste wieder vergessen

-
Wie du meinen?!

-

Ich meine, das ich das hätte auch schon hinschreiben müssen
. Sorry ungenaue Ausdrucksweise.
-
Danke...hat mir sehr geholfen