1. 程式人生 > >VC 判斷選中的 單選框 複選框的

VC 判斷選中的 單選框 複選框的

一 vc對話方塊中的組框控制元件起什麼作用?

1)它可將多個單選按鈕圈起來,再將你想設為預設按鈕的那個按鈕的Group屬性選中,其它按鈕的Group屬性取消。
這樣這些RADIO按鈕就成了一組可以實現在他們之間進行單選,這4個按鈕只有group屬性的可以對映一個變數,其型別為int,這個變數可以用來返回使用者選擇了哪個選項,0表示選擇了第一個,1表示選擇了第二個,
....依此類推
這樣以後就可以分別對不同的RADIO按鈕進行訊息映射了

2)基本上就是為了畫面效果,將相關的一些控制元件圈起來,起個擡頭。
在對話方塊里拉一個GroupBox,設定擡頭內容,把需要的控制元件圈起來即可。

3)被分到一組裡的單選框是互斥的,不在一個組裡的單選框是互不影響的(組框裡的單選框只能一個被選中)

二 判斷被選中的單選框

VC中建立基於對話方塊的類,在對話方塊控制元件中新增組框,在組框中放三個單選框,ID分別為IDC_RADIO1,IDC_RADIO2,IDC_RADIO3.可以在對話方塊控制元件中新增一個Button控制元件,在Button控制元件單擊命令響應中新增如下命令(程式碼僅起示例作用)

UINT nSex=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO3);//引數分別為第一個、最後一個單選框的ID號
 switch(nSex)
{
 case IDC_RADIO1:
  ::AfxMessageBox("選中第一個");break;
         case IDC_RADIO2:
  ::AfxMessageBox("選中第2個");break;
  case IDC_RADIO3:
  ::AfxMessageBox("選中第3個");break;

}

三 判斷被選中的複選框

VC中建立基於對話方塊的類,在對話方塊控制元件中新增組框(可以不新增),在組框中放三個複選框,ID分別為IDC_CHECK1,IDC_IDC_CHECK12,IDC_IDC_CHECK3.可以在對話方塊控制元件中新增一個Button控制元件,在Button控制元件單擊命令響應中新增如下命令(程式碼僅起示例作用)

if((IsDlgButtonChecked(IDC_CHECK1))&&(IsDlgButtonChecked(IDC_CHECK2)))
 ::AfxMessageBox("選中第1 第2個複選框");
 if((IsDlgButtonChecked(IDC_CHECK1))&&(IsDlgButtonChecked(IDC_CHECK3)))
 ::AfxMessageBox("選中第1 第3個複選框");
 if((IsDlgButtonChecked(IDC_CHECK3))&&(IsDlgButtonChecked(IDC_CHECK2)))
 ::AfxMessageBox("選中第2 第3個複選框");

函式功能:該函式改變按鈕控制的選中狀態。

  函式原型:BOOL CheckDlgButton(HWNDhDlg,int nlDButton,UINT uCheck);
  引數:
  hDlg:指向含有該按鈕的對話方塊的控制代碼。
  nlDButton:標識要修改的按鈕。
  uCheck:給定該按鈕的選中狀態。該引數可取下列值,這些值的含義如下:
  BST_CHECKED:設定按鈕狀態為己選中(checked)。
  BST_INDETERMINATE:設定按鈕狀態變灰,表示不確定狀態。只有在該按鈕具有BS_3STATE或BS_AUTO3STATE樣式時才能使用該值。
  BST_UNCHECKED:設定按鈕為未選中狀態(unchecked)。
  返回值:如果函式執行成功,返回值非零;如果函式失敗,則返回值為零。若想獲取更多錯誤資訊,請呼叫 GetLastError函式。

示例程式

CheckDlgButton(IDC_L_SHOW_TITLE,g_SystemPara.m_bShowTitle);
CheckDlgButton(IDC_L_SHOW_BACKGROUND,g_SystemPara.m_bShowBackground);
CheckDlgButton(IDC_L_SHOW_NAME,g_SystemPara.m_bShowName);
CheckDlgButton(IDC_L_SHOW_ID,g_SystemPara.m_bShowID);
CheckDlgButton(IDC_L_SHOW_GROUPID,g_SystemPara.m_bShowGroupID);
CheckDlgButton(IDC_L_SHOW_LON, g_SystemPara.m_bShowLon);
CheckDlgButton(IDC_L_SHOW_LAT, g_SystemPara.m_bShowLat);
CheckDlgButton(IDC_L_SHOW_HEIGHT, g_SystemPara.m_bShowHeight);
CheckDlgButton(IDC_ALWAYS_SHOW,g_SystemPara.m_bAlwaysShow);

註釋:示例程式中變數為BOOL型別,而vc中,定義如下,注意使用技巧:

#define BST_UNCHECKED      0x0000
#define BST_CHECKED        0x0001
#define BST_INDETERMINATE  0x0002