He comprobado muchos lugares para la respuesta a esto, y recomiendan que la forma en que lo he hecho, pero no parece funcionar para mí, así que cualquier ayuda sería muy apreciada.

Tengo una casilla de verificación y me gustaría que para activar un cuadro de edición cuando se compruebe y desactivarlo cuando no está activada.

El siguiente código es para lo que he creado:

void CMFCApplication1Dlg::OnBnClickedCheck1()
{
    UINT nCheck = CheckBox.GetState();
    if (nCheck == BST_CHECKED)
    {
        EditBox.EnableWindow(TRUE);
    }
    else if (nCheck == BST_UNCHECKED)
    {
        EditBox.EnableWindow(FALSE);
    }
    else
    {
        EditBox.EnableWindow(TRUE);
    }

ncompruebe 520 cuando lo ejecuto en la depuración, por lo que va directamente a la otra opción.

Muchas gracias

InformationsquelleAutor asgoodas | 2012-08-23

4 Comentarios

  1. 7

    CButton del GetState se presenta el estado actual del objeto de diálogo. Lo que quieres usar es CButton del GetCheck.

    Alternativamente, usted puede, como se indica en la web de MSDN, hacer un bit a bit de la máscara sobre el valor de retorno para obtener la corriente de Verificación del estado – pero GetCheck es justo ahí, así que podrías utilizar.

  2. 8

    Si usted lee el página de manual en GetState verá que devuelve una máscara de bits.

    Esto significa que usted no puede utilizar directamente en las comparaciones, usted tiene que comprobar es como una máscara:

    if ((nCheck & BST_CHECKED) != 0)
    {
        //Button is checked
    }
    else
    {
        //Button is unchecked
    }

    Sin embargo, GetCheck podría ser más apropiado en su caso.

    • Que funciona, muchas gracias.
  3. 0

    De Foro MSDN:

    CButton *m_ctlCheck = (CButton*) GetDlgItem(IDC_CHECKBOX);
    int ChkBox = m_ctlCheck->GetCheck();
    CString str;
    
    if(ChkBox == BST_UNCHECKED)
      str.Format(_T("Un Checked"));
    else if(ChkBox == BST_CHECKED)
      str.Format(_T("Checked"));
  4. 0

    Para leer el estado de una casilla de verificación denominada IDC_CHECK1 en una variable:

    bool IsCheck1Checked;

    utilice el siguiente código:

    CButton *m_ctlCheck1 = (CButton*)GetDlgItem(IDC_CHECK1);
    IsCheck1Checked = (m_ctlCheck1->GetCheck() == 1) ? true : false;

Dejar respuesta

Please enter your comment!
Please enter your name here