Problem mit RadioButtons.....



  • Hallo,
    habe folgendes Problem mit RadioButtons.
    In meiner dialogfeldbasierenden Anwendung existieren mehrer Unterdialoge. Werden nun Änderungen an den Steuerelementen eines U-Dialoges vorgenommen, muss ich dies für spätere Funktionen wissen.

    OK, um Änderungen an RadioButtons zu merken habe ich folgende Fkt implementiert.
    m_pRadioButton = Membervariable der Optionsgruppe
    n_IDRadio1/2 = ID der Optionsfelder

    void CDataLink::OnChangeRadio(int &m_pRadioButton, UINT n_IDRadio1, UINT n_IDRadio2)
    {
    	int nOldStatus;
    	nOldStatus = m_pRadioButton;
    
    	switch(GetCheckedRadioButton(n_IDRadio1, n_IDRadio2))
    	{
    	case n_IDRadio1:
    		if ( nOldStatus == 0 )
    		{
    			TRACE ("Status hat sich nicht verändert!");
    		}
    		else
    		{
    			TRACE ("Status verändert");
    			((CADMAconfigDlg*)GetParent())->m_bChangeData = TRUE;
    		}
    		break;
    
    	case n_IDRadio2:
    		if ( nOldStatus == 1 )
    		{
    			TRACE ("Status hat sich nicht verändert!");
    		}
    		else
    		{
    			TRACE ("Status verändert");
    			((CADMAconfigDlg*)GetParent())->m_bChangeData = TRUE;			
    		}
    		break;
    	}
    }
    

    Die switch-Anweisung funktioniert in diesem Falle NICHT, da für die ID der Optionsfelder eben nicht IDC_RADIO_CAN, sondern der entsprechende Int-Wert (1026) genommen wird. Gebe ich die IDs direkt an, sprich wie folgt:

    switch(GetCheckedRadioButton(IDC_RADIO_CAN, IDC_RADIO_COM))
    	{
    	case IDC_RADIO_CAN:
    		if ( nOldStatus == 0 )
    ...
    

    dann funktionierts wunderbar.
    Da ich aber dieser Funktion ja verschiedene Optionsfelder übergeben möchte ist das dann wohl eher sehr mühsam, oder? 😕

    Bin für jeden Tipp, bzw. auch andere Lösungswege sehr dankbar!!!

    Gruss
    S.



  • Hilft dir ((CButton*)GetDlgItem(n_IDRadio1))->GetCheck() weiter? 🙂



  • Hallo,
    Danke für Deine schnelle Antwort.
    Funktioniert nur leider nicht. 🙄

    ((CButton*)GetDlgItem(n_IDRadio1))->GetCheck()
    

    Hierüber bekomme ich auch nur den int-Wert des Optionsfeldes....!

    Aber irgendwie muss das doch gehen, oder?
    Wie löst man denn so etwas SINNVOLLER?

    Bin für alle Tipps und Ratschläge offen.

    Danke.

    Gruss
    S.


Anmelden zum Antworten