Beim Laden des Formulars Aktionen ausführen



  • Hi Leute!

    Ich hab eine Dialogbox in der sich 4 Radio Buttons befinden. Die Ansteuerung hab ich allein hinbekommen und auch die Verarbeitung, was passieren soll, wenn der jeweilige gesetzt ist.
    Nur beim Start ist bzw. beim Aufruf des Dialogfeldes sind alle 4 unchecked. Wo setz ich nun rein, das einer, und ich hab auch schon im Kopf welcher und wie ich den herausfinde, ausgewählt, also checked ist.

    Danke NiP



  • In der Funktion OnInitDialog des Dialogfeldes setzt Du den Radio den Du magst, als checked.
    (sofern Du einen Dialog hast und kein Formular - das sind zwei verschiedenen Sachen)

    [ Dieser Beitrag wurde am 08.07.2003 um 14:05 Uhr von MuehBln editiert. ]



  • Auch wennich mich jetzt dumm anstellen sollte.
    Ist "OnInitDialog()" schon angelegt, wenn mein Dialog von CDialog erbt? Die WM_OnInitDialog ist schon da, nur die Funktion dazu werd ich dann wohl selber schreiben müssen, oder?

    NiP



  • Du erbst sie zwar, aber musst sie, wenn Du sie brauchst überladen.
    Am besten über den Klassenassi hinzufügen.



  • Hab ich inzwischen gemacht, hab der WM_OnInitDialog die Funktion hinterlegt. Jetzt hab ich ein anderes Problem. Ich komm irgendwie net an die einzelnen IDCs ran. Ich bekomm immer die Meldung, dass links vom "." das falsche oder kein Strukt/Klasse/Union steht. Ich programmier ja nun schon länger mit C++, halt noch net lang mit VC (+MFC). Ich find sozusagen die Oberklasse nicht. Wenn ich den Dialognamen angeb, also etwa so:

    CMeinDialogDlg.IDD_MeinDialog.IDC_Radio_But.SetCheck(1);

    DAs will er nicht. Vom Verständnis her müsste es doch so sein, dass meine Dialogklasse den Grafischen Dialog beinhaltet, der dann seine grafischen Komponenten beinhaltet auf die ich zugreifen kann.
    Wen ich das komplett falsch verstehe, was ich glaub, dann sagt mir bitte, was am weitesten rechts zu stehen hat. Hab es auch schon mit this versucht.
    Sagt mir bitte wie ich da ran komm.
    Bei Membervariablen hab ich das kapiert, das funzt auch, z.B. bei Editboxen. Mit denen hab ich schon gearbeitet. Muss ich sowas hier auch anbinden und darüber ansprechen mit UpdateData(True)?
    Ich glaub die letzte Frage kann der Schlüssel sein.



  • Oh ne, das geht auch nicht. Die IDs der Dialogfelder sind keine Membervariablen der Klasse!

    GetDlgItem(IDC....) liefert ein Pointer auf CWnd den Du dann noch entsprechend Deines Typs casten must (CButton, CEdit, ...). Mit dem Zeiger kannst Du dann weiterarbeiten und die gewünschten Sachen mit dem Feld anstellen.

    CButton* but = (CButton*) GetDlgItem(IDC_Radio_But);
    but->SetCheck(1);
    

    Wenn Du eine Value-Membervariable für die Radio-Buttons hast, kannst Du diese auch einfach auf den enstsprechenden Wert (0, 1, 2, ...) setzen und dann UpdataData aufrufen. Das führt zum gleichen Ziel.



  • Hey!

    DAs nennich ne schnelle und sehr gute Antwort. Danke. Du hast Mir sehr gekolfen, dass zu verstehen. Na dann mach ich mich mal ran ans Werk und werde berichten, was passiert ist.

    Danke



  • Ich glaub ich brauch es Dir nicht zu erzählen, aber es funktioniert toll.
    Deine Antwort war gut, präzise und schnell. Großes Lob.

    Danke

    NiP


Anmelden zum Antworten