Check Boxes enable/disable



  • Aloha!

    In einem Dialog soll ich bei Aktivierung/Deaktivierung einer Checkbox drei 'SubCheckboxes' ebenfalls aktivieren/deaktivieren und enablen/disablen.
    (sonst kann man die drei Untergruppen beliebig selektieren, solange Set gesetzt ist, Code nicht gezeigt)

    Struktur also in etwa so:

    -SET
    -GROUP0
    -GROUP1
    -GROUP2

    Ersteres geht recht leicht ich hab's folgendermaßen gemacht:

    void CSetup::OnClickSet() 
    {
    
      if (IsDlgButtonChecked (IDC_SET))  
      {  
    	 if (!IsDlgButtonChecked (IDC_GROUP0))  
    		CheckDlgButton (IDC_GROUP0, 1);
    	 if (!IsDlgButtonChecked (IDC_GROUP1))  
    		CheckDlgButton (IDC_GROUP1, 1);
    	 if (!IsDlgButtonChecked (IDC_GROUP2))  
    		CheckDlgButton (IDC_GROUP2, 1);
    
    }
    
      else
      {
    	  if (IsDlgButtonChecked (IDC_GROUP0))  
    		CheckDlgButton (IDC_GROUP0, 0);
    	  if (IsDlgButtonChecked (IDC_GROUP1))  
    		CheckDlgButton (IDC_GROUP1, 0);
    	  if (IsDlgButtonChecked (IDC_GROUP2))  
    	 	CheckDlgButton (IDC_GROUP2, 0);	
      }
    
    }
    

    Aber wie kann ich die drei SubCheckboxes disablen bzw. wieder enablen? Es gibt eine Class CCmdUI, aber die wird nur bei Update (Menu) benutzt. Habe versucht mit GetDlgItem (IDC_GROUP0) und einem cast die Funktion Enable(FALSE) auszuführen, aber da gibts Probleme (GetDlgItem gibt ja einen Pointer vom Typ CWnd zurück).

    Hat jemand eine Idee, wie man das macht - ist das erste Mal, dass ich sowas brauche. Gracias!

    BT



  • Aloha,

    Dein Ansatz ist genau der richtige, wenn ich Dich richtig verstanden habe, nur einen Tick anders. 👍

    ((CButton*)GetDlgItem(IDC_GROUP0))->SetCheck(0);
    

    und schon ist die checkbox unchecked.

    Grüße

    BOA



  • Fragestellung is etwas .... ?
    Meinst du etwa:

    GetDlgItem(IDC_GROUP0))->EnableWindow(/*TRUE/FALSE*/);
    


  • GetDlgItem(IDC_SECTOR0)->EnableWindow(TREU/FALSE);
    

    ist genau das, was ich gesucht habe. Danke!

    CheckDlgButton (IDC_GROUP0, 0);
    

    ist in diesem Fall etwas einfacher als

    ((CButton*)GetDlgItem(IDC_GROUP0))->SetCheck(0);
    

    würd' ich sagen, aber danke trotzdem.

    BT


Log in to reply