BOOL CCollParamPage::CreateCheckBox(LPCTSTR lpszCaption, int x, int y, int width, int hight, CWnd* pParent, UINT nID /* = 0xffff */)
{
CButton * m_button;
BOOL success; m_button = new CButton;

success = m_button->Create(_T(""),
WS_CHILD|WS_VISIBLE|BS_AUTOCHECKBOX,
CRect(0,0,0,0),
pParent,
nID); if (success)
{
GetDlgItem(nID)->SetWindowText(_T(lpszCaption));
GetDlgItem(nID)->MoveWindow(x, y, width, hight);
GetDlgItem(nID)->ShowWindow(SW_HIDE);
} return success;
}动态的创建了一个BS_AUTOCHECKBOX风格的按钮控件,创建按钮的函数如上。其中有BS_AUTOCHECKBOX风格。得到的控件就像
CHECKBOX那样,选中打钩,未选中就空白。现在我需要获得该控件的选中状态,这条语句该怎么写呢?假设该控件ID为IDC_AFN04_F1_CON_CHECKBOX。请教多谢了··

解决方案 »

  1.   

    CButton::GetStateUINT GetState() const;返回值:
    返回按钮控件的当前状态。可以使用以下的掩码取得所需的具体状态信息。
    -----------------------------------------------------------
    掩码  含义  
    0x0003 指定选中状态(选中与否,仅用于单选钮和复选框)。返回0表明未选中,1表明已选中。单选钮在选中时有一个黑圈。复选框选中时则有一个“ⅹ”号。返回2表明选中状态不定(仅用于有三种状态的复选框)。有三种状态的复选框如果处于半色调模式(halftone pattern),就是处于不确定状态  
    0x0004 指定按钮的加亮状态。非零值表明按钮处于加亮状态。用户单击并且保持鼠标左键于按下状态时,按钮是加亮的。在用户放开鼠标按钮时,加亮状态就不复存在了  
    0x0008 是否处于获得焦点状态。返回非零值表明按钮正获得焦点  说明:本函数用于检索单选钮或者复选框的状态。
      

  2.   

    CButton::GetCheckint GetCheck( ) const;返回值:
    对于采用BS_AUTOCHECKBOX、BS_AUTORADIOBUTTON、BS_AUTO3STATE、BS_CHECKBOX、BS_RADIOBUTTON或BS_3STATE风格建立的按钮,返回值为下列之一: 值 含义  
    0 按钮处于未选中状态  
    1 按钮处于选中状态  
    2 按钮状态不定(仅当按钮风格为BS_3STATE或BS_AUTO3STATE时)如果按钮是其它风格,则返回0。  那用这个不是更贴切·关键我不知道该怎么用~~
      

  3.   

    UINT nState = m_button.GetState();
    switch ( nState & 0x0003 )
    {
        case 0:
             {
                 //示选中
             }
             break;
        case 1:
             { 
                //选中
             }
             break;
        case 2
             {
                  //不确定
             }
             break;
        default:
             break;
       
        
    }