Forum: PC-Programmierung Visual C++: Mehrere AUTORADIOBUTTONs in einem Dialogfenster nutzen; *.rc - File


von Moritz N. (mox-mox)


Lesenswert?

Hi,
Ich benutze M$ Windows XP; Visual Studio 2008 Express Edition; Visual 
C++.
Ich möchte in einem Dialogfenster mehrere AUTORADIOBUTTONS  nutzen. 
Soweit ist das auch kein Problem. Aber wenn ich nun mehrere 'Gruppen' 
von AUTORADIOBUTTONs verwenden möchte, dann kann ich immer nur einen 
auswählen, statt einen pro 'Gruppe'.

Beispiel:
1
IDD_SETCOM DIALOG DISCARDABLE  22, 17, 345, 130
2
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
3
...
4
...
5
GROUPBOX  "COMPORT",    100, 05, 05, 45, 105, WS_TABSTOP 
6
  AUTORADIOBUTTON "COM1",    101, 10, 15, 30, 10
7
  AUTORADIOBUTTON "COM2",    102, 10, 25, 30, 10
8
9
GROUPBOX  "BAUDRATE",    200, 55, 05, 75, 105, WS_TABSTOP
10
  AUTORADIOBUTTON "600",    201, 60, 15, 30, 10
11
  AUTORADIOBUTTON "1200",    202, 60, 25, 30, 10
12
  AUTORADIOBUTTON "2400",    203, 60, 35, 30, 10
13
...
14
...
15
PUSHBUTTON  "Open Comport",    IDOK,152,115,50,11,WS_GROUP
16
END

Das ganze befindet sich in einem Ressourcefile, und ist ein erweitertes 
Beispielprojekt des Synaptics SDK: 
http://www.synaptics.com/sites/default/files/SynCOMAPIv1_0.zip 
(Synplot), das ich um die Fähigkeit, die Messdaten über die Serielle 
Schnittstelle zu senden erweitern möchte.

Wie sorge ich dafür, dass in dem Dialogfenster mehrere 'Gruppen' (in den 
Groupboxes) von AUTORADIOBUTTONs sind, bei denen ich innnerhalb jeder 
'Gruppe' einen Radiobutton auswählen kann?
(Bin noch n ziemlicher Anfänger was C++ angeht, vorher nur C, wenn also 
irgendwo was total blödsinniges da stehen sollte,  bitte sagen)

Gruß,
mox-mox

von ... (Gast)


Lesenswert?

Hi,

der jeweils erste Radiobutton einer Gruppe muß das Flag WS_GROUP haben.
Keine Ahnung wie das mit VS2008Express geht, auch die von Dir gepostete 
Syntax ist mir unbekannt. Normalerweise sieht das im .rc File etwa so 
aus:
1
  CONTROL  "Rotate &0 Degrees",IDC_ROTATE_0,"Button", BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,10,10,69,10
2
  CONTROL  "Rotate &90 Degrees",IDC_ROTATE_90,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,10,24,73,10
3
  CONTROL  "Rotate &180 Degrees",IDC_ROTATE_180,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,10,38,76,10
4
  CONTROL  "Rotate &270 Degrees",IDC_ROTATE_270,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,10,52,76,10
(modifizierter Ausschnitt aus BezelTest.rc aus Deinem angehängten zip)

CU

von Moritz N. (mox-mox)


Lesenswert?

Hey, danke für die schnelle Antwort!! Hat das Problem zu 100 % gelöst :)
Ich hab das einfach mit Bitwise Oder angefügt:
1
GROUPBOX  "COMPORT",    100, 05, 05, 45, 105, WS_TABSTOP | WS_GROUP
Zu der Schreibweise kann ich nix weiter sagen, als dass ich die so 
vorgefunden habe, und nur erweitert hab (also in Analogie Buttons, Text 
und ein Dialogfenster zugefügt habe). Die schreibweise stimmt aber auch 
mit der Schreibweise überein, die sich auf der M$ Webseite findet:
http://msdn.microsoft.com/en-us/library/aa381003(VS.85).aspx

Gruß,
mox-mox

von ... (Gast)


Lesenswert?

Hi,

hab grad nochmal geschaut, die Syntax von Dir war natürlich völlig OK. 
Ich kannte nur bisher nicht die Variante:
1
AUTORADIOBUTTON "COM1",    101, 10, 15, 30, 10
Sondern nur die Variante:
1
CONTROL "COM1", 101, "Button", BS_AUTORADIOBUTTON | WS_TABSTOP, 10, 15, 30, 10
Was im Endeffekt aber wohl dasselbe ist. Letzteres wird so auch vom 
Dialogeditor (zumindest bis VS2005Pro) erzeugt.
Man lernt halt nie aus.

CU

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.