在MFC对话框中启用按钮

在MFC对话框中启用按钮,mfc,Mfc,我有两个按钮: 单选按钮:“十六进制” 按钮:“A” 我想在用户选中“十六进制”按钮时启用“A”(创建“A”时,“A”的状态为“禁用”),我如何才能做到这一点?谢谢大家 您需要使用函数 buttonA.EnableWindow( TRUE ); 如果没有CButton对象,可以通过调用GetDlgItem及其ID来访问该按钮: GetDlgItem( IDC_BUTTON_A )->EnableWindow( TRUE ); 您应该使用ON\u UPDATE\u COMMAND\u U

我有两个按钮:

  • 单选按钮:“十六进制”
  • 按钮:“A”
  • 我想在用户选中“十六进制”按钮时启用“A”(创建“A”时,“A”的状态为“禁用”),我如何才能做到这一点?谢谢大家

    您需要使用函数

    buttonA.EnableWindow( TRUE );
    
    如果没有
    CButton
    对象,可以通过调用
    GetDlgItem
    及其ID来访问该按钮:

    GetDlgItem( IDC_BUTTON_A )->EnableWindow( TRUE );
    

    您应该使用
    ON\u UPDATE\u COMMAND\u UI
    机制来启用/禁用对话框中的“A”或任何其他按钮。默认情况下,它不适用于基于对话框的应用程序,但您可以通过以下操作轻松启用它们

    更新函数中的代码如下所示:

    void CCalculatorDlg::OnUpdateButtonA(CCmdUI* pCmdUI)
    {
            if( m_ctrlBtnHex.GetCheck() == BST_CHECKED )
            {
                pCmdUI->Enable( TRUE );
            }
            else
            {
                pCmdUI->Enable( FALSE );
            }
    }
    
    在你的例子中,因为A,B,C,D,E,F基本上具有相同的状态,所以你可以这样做:

    void CCalculatorDlg::OnUpdateButtonA(CCmdUI* pCmdUI)
    {
            if( m_ctrlBtnHex.GetCheck() == BST_CHECKED) )
            {
                m_ctrlBtnA.EnableWindow( TRUE );
                m_ctrlBtnB.EnableWindow( TRUE );
                m_ctrlBtnC.EnableWindow( TRUE );
                // so on...
            }
            else
            {
                m_ctrlBtnA.EnableWindow( FALSE );
                m_ctrlBtnB.EnableWindow( FALSE );
                m_ctrlBtnC.EnableWindow( FALSE );
                // so on...
            }
    }
    

    严格地说,它是
    buttonA.EnableWindow(TRUE)
    或者只是
    buttonA.EnableWindow()
    @IInspectable:是的,虽然“TRUE”也可以,但有一个警告:)但我没有任何处理buttonA的CButton对象。你能告诉我处理它的功能吗?非常感谢。您必须获取按钮的窗口句柄并向其发送WM_ENABLE消息,或者使用类向导创建一个包含您希望能够控制的按钮的CButton对象。@PhùngKhánhiên如果您没有CButton,则可以使用GetDlgItem(IDC_button)->EnableWindow(TRUE);
    NameOfYourButton.EnableWindow( TRUE );