Kontrollkästchen aktivieren und deaktivierern



  • Hallo,

    ich bin noch relativ neu im Programmieren mit Visual C++ mit MFC.
    Ich habe eine grafische Oberfläche mit mehreren Kontrollkästchen. Wenn ich nun eines anklicke (abhacke) sollen die anderen grau werden (disabled). Das kann ich ja mit

    GetDlgItem(IDC...)->EnableWindow(FALSE);
    

    machen. Jetzt möchte ich aber, dass, wenn ich das Hakcken aus dem Kontrollkästchen entferne, die anderen Kontrollkästchen wieder normal werden (enabled).

    Ich habe schon viele Beiträge in vielen Foren gelsen, aber leider nicht das gefunden was ich Suche.

    Viele Dank schonmal für Eure Hilfe!


  • Mod

    EnableWindow(TRUE);
    

    Erstaunlich.. oder? SCNR.
    Lies doch mal die Doku in der MSDN...



  • Danke, aber vielleicht habe ich das Problem nicht explizit genug beschrieben:
    Ich habe ein OnClick-Ereignis für das Kontrollkästchen erstellt, wenn ich nun auf dieses das erste Mal klicke (abhacke) werden die anderen Kästchen disabled. Soweit bekomme ich das hin.
    Wenn ich nun aber den Hacken entferne, bleiben die anderen Kästchen disabled. Ich weiß einfach nicht wie sich das realisieren lässt.
    Das ich ein Kästchen durch

    EnableWindow(TRUE);
    

    aktivieren kann ist mir klar.



  • Hast du eine Variable mit deiner Checkbox verbunden?
    In deiner Dialog-Klasse hast du irgendwo DoDataExchange. Innerhalb dieser Funktion machst du:

    DDX_Check(pDX, IDC_DEINE_CHECK_BOX, m_bChecked);
    

    Wobei m_bChecked in deinem Header definiert sein muss.

    Dann hast du in deinem Message-Handler wo du jetzt EnableWindow(FALSE) machst folgendes:

    void CDeineKlasse::OnBnClickedDeineCheckBox()
    {
       UpdateData(TRUE);
       GetDlgItem(IDC_EINE_DEINER_ANDEREN_CHECKBOXEN)->EnableWindow(!m_bChecked);
    }
    

  • Mod

    Dann hast Du was nicht verstanden. Wenn Du mit EnableWindow(FALSE) sie deaktivierst, dann werden sie mit EnableWindow(TRUE) aktiviert!

    Ich müsste also davon ausgehen, dass Du EnbaleWindow(TRUE) eben nicht ausführst.



  • Super!
    Jetzt funktioniert es wie gewünscht.
    Vielen Dank für Eure Hilfe!


Anmelden zum Antworten