Forum: PC-Programmierung Radio Button MFC


von Hansi (Gast)


Lesenswert?

Guten Tag

Ich habe verschiedene Radio Buttons auf meiner Oberfläche, nun gebe ich 
diesen Radio Buttons eine BN_CLICKED Message. Nun möchte ich diesen 
Buttons (IDC_M10) eine member Variable übergeben, doch sie stehen gar 
nicht in dieser Liste (ClassWizard --> Member Variables), wo man ihnen 
die Variable geben kann.
Was mache ich falsch?

Gruss Hansi

von Karl H. (kbuchegg)


Lesenswert?

Hansi wrote:
> Guten Tag
>
> Ich habe verschiedene Radio Buttons auf meiner Oberfläche, nun gebe ich
> diesen Radio Buttons eine BN_CLICKED Message. Nun möchte ich diesen
> Buttons (IDC_M10) eine member Variable übergeben, doch sie stehen gar
> nicht in dieser Liste (ClassWizard --> Member Variables), wo man ihnen
> die Variable geben kann.
> Was mache ich falsch?

Gar nichts.
Eine Member Variable die die momentane Auswahl repräsentiert
wird über über den ersten Radio Button erzeugt.

Brauchtst du Control Variablen für alle Radio Buttons, dann lass
dir vom Wizard diese für den ersten Radio Button erzeugen.
Anschliessend duplizierst du einfach händisch die Member
Variablen. Sind ja nur 2 Stellen an denen du eingreifen
musst:
  Im Header File eine Control Variable für den Button anlegen.
  Einfach die Zeile die der Wizard generiert hat duplizieren
  und einen neuen Variablennamen dafür vergeben.

  Im Source Code, im Abschnitt DoDataExchange
  die Verbindung dieser Control Variablen mit dem Control
  herstellen. Auch hier wieder: Du siehst dir an, wie der
  Wizard das eingebaut hast, duplizierst die Zeile und
  passt die Namen an.


PS: Bei 10 Radio Buttons sollte man sich schon überlegen, ob
ein Radio Button das richtige Werkzeug ist, oder ob nicht eine
ListBox oder eine ComboBox besser wäre.

von Hansi (Gast)


Lesenswert?

Danke für deine Antwort, dies habe ich verstanden.
Ich möchte jedoch jedem Radio Button eine Member-Variable übergeben,
da ich die Buttons programmiertechnisch anordnen und verschieben kann.
Dazu brauche ich, soviel ich weiss eine Membervariable.

m_cbDD.SetWindowPos(NULL,515,345,0,0,SWP_NOSIZE | SWP_NOZORDER);

Oder kann ich dies auch anders lösen?
Gruss Hansi

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> Oder kann ich dies auch anders lösen?

Ja:

Mit GetDlgItem() erhältst Du ein Fensterhandle bzw. einen Pointer auf 
CWnd, mit dem Du auch SetWindowPos aufrufen kannst.

Übergeben musst Du nur die Resource-ID. GetDlgItem ist eine 
Memberfunktion von CDialog bzw. eine Win32-API-Funktion (die dann noch 
das Fensterhandle des Dialoges übergeben bekommen will).

von Karl H. (kbuchegg)


Lesenswert?

Hansi wrote:
> Danke für deine Antwort, dies habe ich verstanden.
> Ich möchte jedoch jedem Radio Button eine Member-Variable übergeben,

Du übergibst überhaupt nichts.
Du bindest höchstens eine Variable an das Control.

> da ich die Buttons programmiertechnisch anordnen und verschieben kann.
> Dazu brauche ich, soviel ich weiss eine Membervariable.
>
> m_cbDD.SetWindowPos(NULL,515,345,0,0,SWP_NOSIZE | SWP_NOZORDER);
>
> Oder kann ich dies auch anders lösen?


Genau das ist die Control-Variable!

Im Wizard, mit dem du Variablen erstellst, ist gleich
unter dem Namen der Variablen, deren Typ angeführt.
Anstatt 'Wert' oder 'Value' wählst du 'Control' aus.

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.