Einführung in Radiobuttons gesucht
-
Ich habe Radiobuttons in mein Dialogfeld eingebaut und weiß das diese Gruppiert sind.
Aber:
- wie bestimme ich was zu welcher Gruppe gehört?
- wie greife ich auf die Eigenschaften zu wenn ich keine Variable hinzufügen kann?Im Internet konnte ich nur finden wie ich komplett manuell Radiobuttons erstelle - aber das bringt mich nicht weiter wenn ich den Ressourceneditor verwende.
Matthias
-
Eine Gruppe beginnt mit dem ersten Control das den Stil WS_GROUP hat. Es endet mitdem letzten Control im Dialog oder vor dem Control das als nächstes den WS_GROUP Stil hat.
Die Z-Order bestimmt damit auch die Gruppenzugehörigkeit.
-
-
(D)Evil schrieb:
die dort dargestellte Vorgehensweise funktioniert so in VS2005 nicht. Ich kann dem Radiobutton zumindest keine int Variable zuordnen, sondern nur ein CButton.
Eine für das Gruppen-Radiobutton-Element zugewiesene Variable kann ich auch abfragen und setzen über
int n=m_WndRadioLinearDb.GetCheck(); m_WndRadioLinearDb.SetCheck(BST_UNCHECKED); //BST_CHECKEDdamit erfahre ich aber noch immer nichts über die anderen Radiobuttons in derselben Gruppe (für die ich nur eine Variable zuweisen kann, wenn sie Gruppe=True gesetzt haben)
Ich habe gesehen dass es die Funktion 'GetCheckedRadioButton' gibt, sehe aber nicht wie ich die Anwenden sollte, da die nach nIDFirstButton und nIDLastButton fragt bei denen ich nicht weiß wie ich daran komme.
int GetCheckedRadioButton( int nIDFirstButton, int nIDLastButton );Matthias
-
pospiech schrieb:
(D)Evil schrieb:
die dort dargestellte Vorgehensweise funktioniert so in VS2005 nicht. Ich kann dem Radiobutton zumindest keine int Variable zuordnen, sondern nur ein CButton.
Kommt mir bekannt vor: http://www.c-plusplus.net/forum/viewtopic-var-t-is-132674.html
Da geht es zwar um VC2003, aber vielleicht is das 2005er ja genauso doof.
-
pospiech schrieb:
die dort dargestellte Vorgehensweise funktioniert so in VS2005 nicht. Ich kann dem Radiobutton zumindest keine int Variable zuordnen, sondern nur ein CButton.
Eine für das Gruppen-Radiobutton-Element zugewiesene Variable kann ich auch abfragen und setzen über
[snip]Es geht genau so! Nur wird im Normalfal "Control" angeklickt und Du musst das erstmal ausschalten, dann kannst Du euch eine int Variable anbinden!
Mach Dir mal den Unterschied klar was es bedeutet eine Control-Variable anzubinden oder eine Variable! Das erste gibt Dir "Control"le über Dein Control. Das zweite liefert Dir beim Datenausstausch den Inhalt.
-
Martin Richter schrieb:
pospiech schrieb:
die dort dargestellte Vorgehensweise funktioniert so in VS2005 nicht. Ich kann dem Radiobutton zumindest keine int Variable zuordnen, sondern nur ein CButton.
Eine für das Gruppen-Radiobutton-Element zugewiesene Variable kann ich auch abfragen und setzen über
[snip]Es geht genau so! Nur wird im Normalfal "Control" angeklickt und Du musst das erstmal ausschalten, dann kannst Du euch eine int Variable anbinden!
Also, ich habe jetzt statt einer Control eine Value Variable erstellt und den vorgegebenen Wert bool im Quelltext nach int geändert. Ein Auslesen als
int n=m_WndRadioLinearDB;
liefert mir jedoch unabhängig von den Status des Radiobuttons immer nur "0".
Weiter bin ich damit also auch nicht gekommen.
Matthias
-
hast du vor
int n=m_WndRadioLinearDB;
auch ein UpdateData(TRUE); stehn?bzw. schau mal mit nem texteditor in die *.rc rein und kuck ob auch alle IDC_RADIO's untereinander stehn oder ob vieleicht das erste IDC_RADIO (was die gruppe definiert)durch ein IDC_BUTTON (oder sonstwas) getrennt von dem nächten IDC_RADIO ist.
FALSCH wäre
IDC_RADIO1 //definiert gruppe
IDC_BUTTON1 //gruppe endet hier
IDC_RADIO2 //
IDC_BUTTON2
...RICHTIG ist
IDC_RADIO1 //definiert gruppe
IDC_RADIO2 //
IDC_RADIO3 //
IDC_RADIO4 // gruppe endet hier
IDC_BUTTON1
-
LowFly schrieb:
hast du vor
int n=m_WndRadioLinearDB;
auch ein UpdateData(TRUE); stehn?Habe ich noch nie benutzt und kenne ich auch nicht. Wie und wo müsste ich das denn einfügen?
Ausprobiert habe ich
m_WndRadioLinearDb.UpdateData(TRUE); n=m_WndRadioLinearDb.GetCheckedRadioButton(IDC_RADIO3,IDC_DB);was aber auch immer 0 ergibt.
LowFly schrieb:
bzw. schau mal mit nem texteditor in die *.rc rein und kuck ob auch alle IDC_RADIO's untereinander stehn oder ob vieleicht das erste IDC_RADIO (was die gruppe definiert)durch ein IDC_BUTTON (oder sonstwas) getrennt von dem nächten IDC_RADIO ist.
Aus der .rc Datei
CONTROL "linear",IDC_LINEAR,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,125,7,31,12 CONTROL "dB",IDC_DB,"Button",BS_AUTORADIOBUTTON,171,7,24,14 CONTROL "Optionsfeld1",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,162,47,57,10aus der Resource.h Datei
#define IDC_RADIO3 1007 #define IDC_LINEAR 1008 #define IDC_DB 1009Matthias
-
wenn du mit m_WndRadioLinearDb**.** GetCheckedRadioButton erreichts ist deine variable IMMER noch eine control mach mal das was martin dir vorgeschlagen hat.
geh in die header dort wo du m_WndRadioLinearDb definiert hast dort müßte stehn
CButton m_WndRadioLinearDb;
und tausch bei alle CButton mit int aus die ein Radio definieren somit bekommst du den wert der Button zurück.dann sollte
UpdateData(TRUE);
int n = m_WndRadioLinearDb;
CString f;
f.Format("%i\n%i",n,m_WndRadioLinearDb);
MessageBox(f);einen anderen wert zurückgeben als 0;
-
es fehlte das UpdateData(True); damit geht es jetzt. DANKE!
Matthias