www.mikrocontroller.net

Forum: PC-Programmierung Radio Button MFC


Autor: Hansi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Hansi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.