我新建了一个按钮,ID是IDC_BUTTON1,我想让按钮一直处于选中状态代码如下: 
void CToolView::OnButton1() 

CCmdUI* pCmdUI; 
pCmdUI->SetCheck(IDC_BUTTON1); 

运行后,点击按钮后处于选中状态了,但程序马上崩溃. 为什么?请高手指点.谢谢!!

解决方案 »

  1.   

    崩溃原因:
    CCmdUI* pCmdUI; 
    pCmdUI->SetCheck(IDC_BUTTON1); 
    中的pCmdUI未初始化
      

  2.   

    需要映射 ON_UPDATE_COMMAND_UIafx_msg void OnUpdateXXX( CCmdUI* pCmdUI )
    {
    pCmdUI->SetCheck(TRUE); 
    }
      

  3.   

    Ryanwen 告诉我用(CButton*GetDlgItem(IDC_BUTTON1))->SetCheck(BST_CHECKED);我按他的方法做了,但语法好像有问题.编译出错.是(CButton*GetDlgItem(IDC_BUTTON1))的问题,是不是括号的问题?后来我加了按钮成员函数m_btn 然后这样写:
    void CToolView::OnButton1() 

    m_btn.SetCheck(BST_CHECKED);
    }
    编译没问题,但是按钮没处于选中状态。
      

  4.   

    给个事例你自己看吧
    LINK:http://www.codeproject.com/KB/buttons/CRoundButton2.aspx
      

  5.   

    要check,需要把按钮风格改为BS_PUSHBUTTON 
      

  6.   

    void CToolView::OnButton1() 

    CCmdUI* pCmdUI; 
    pCmdUI->SetCheck(IDC_BUTTON1); 
    }pCMDUI 没有初始化,肯定是不行的,对话框里一般是先得到handle 再setcheck的
      

  7.   

    m_button.SetState(TRUE);
    m_button.SetCheck(TRUE);
      

  8.   

    扩展按钮 加一个参数 TRUE就是选中 自己控制
      

  9.   

    重载cbutton吧,DrawItem(LPDRAWITEMSTRUCT lpDIS)中强制把lpDIS->itemState = ODS_SELECTED试试
      

  10.   

    MSDN有例子,怎么不先看看呢。CButton myButton;// Create a push button.
    myButton.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, 
       CRect(10,10,100,30), pParentWnd, 1);// Show it as pushed.
    myButton.SetState( TRUE );