Steuerelemente!



  • Hallo,
    eine grundsätzliche Frage zu Steuerelementen.
    Zu jedem Steuerelement gehören doch 2 Merkmale:
    - IDC_RADIO_....
    - int-Zahl

    So weit so gut. Jetzt zu meinem Problem.
    Ich möchte einer Funktion die IDC_RADIO_... - Wert übergeben was auch kein Problem darstellt. Allerdings in der Fkt selbst ist dann der dazügehörigen INT-Wert nur noch vorhanden. Brauche aber die IDC_... Geschichte für ne Switch-Anweisung.

    Wie kann man das realisieren? Auch über die Control und Membervariablen habe ich bis jetzt noch keine Möglichkeit gefunden.

    Danke für Eure Hilfe.

    Gruss
    S.



  • Nein, IDC_RADIO ist blos ein #define für eine Intzahl.
    Du kannst also statt der Intzahl IDC_RADIO nehmen, musst
    dann aber die Resource.h einbinden.

    Devil



  • Hallo Devil,
    danke für Deine Antwort. 👍
    Jetzt weiß ich zumindest WARUM meine Idee nicht funktioniert.

    Aber leider auch nicht, wie ich es sonst lösen könnte 😕

    Vielleicht erläutere ich gerade nochmal mein Vorhaben:
    - Dialogfeldbasierte Anwendung mit mehreren Unterdialogen (Art Wizard mit Next-Back-Buttons etc.)
    - Unterdialoge werden bei Wechsel der Dialoge nicht geschlossen, sondern nur auf SW_HIDE gesetzt

    OK, so weit so gut.
    Sobald ich nun einen Dialog wechsle (z.B. über Next-Button) soll überprüft werden, ob im aktuellen Dialog an den Steuerelementen (Edit-Felder, Kombo, Chk-Boxen und RADIO-Buttons) Änderungen vorgenommen wurden.
    Wenn ja, dann wird einfach ein FLAG gesetzt und beim Speichern dann in die entsprechende Routine gesprungen.

    BOOL CADMAconfigDlg::OnChangeHandlingData(CDialog *pDlg)
    {
    	/*
    	MessageBox, ob Daten übernommen werden sollen: Ja,Nein,Abbrechen
    	Ja:		Daten übernehmen (nächster Schritt)
    	Nein:		Daten verwerfen, alte Daten aktuell (nächster Schritt)
    	Abbrechen:	Daten so lassen, Dialog aufrufen um Daten zu korrigieren
    	--> Return-Wert zur Überprüfung ob ABBRECHEN gedrückt wurde
    		-> TRUE: Dialog über LastStep wieder aufrufen
    	*/
    	int iResult;		
    	iResult = MessageBox("Daten wurden verändert. Daten übernehmen?", "Daten übernehmen", MB_YESNOCANCEL);
    
    	switch (iResult)
    	{	
    	case IDYES:
     		MessageBox("Daten werden übernommen");
    		pDlg->UpdateData(TRUE);
    		return FALSE;
    
    	case IDNO:
    		MessageBox("Daten verworfen");
    		pDlg->UpdateData(FALSE);
    		return FALSE;
    
    	case IDCANCEL:
    		MessageBox("Abbruch -> zurück zum Dialog");
    		return TRUE;
    	}
    	return FALSE;
    }
    

    Bei Edit-Feldern war das ganze auch kein Problem, hier gibt es die En_Change-Methode, welche das überprüft und ich dann entsprechend mein FLAG setzen kann.

    Bei den Radio-Buttons bin ich jetzt allerdings überfordert. Irgendwie finde ich dort keine Funktion die mir weiterhilft.

    Vielleicht hat ja jemand eine Idee oder kann mir einen besseren Lösungsweg offerieren 😃

    Danke schonmal.

    Gruss
    Stefan

    P.S.: Das muss doch wohl schon mal jemand gemacht haben, oder? 🙄



  • Da gibts doch die OnClick-Methode. 🙂


Anmelden zum Antworten