MFC控制項(3):CheckBox_RadioButton

來源:互聯網
上載者:User
文章目錄
  • check box一般是綁定到一個布爾變數.
  • 通過函數直接來操作
  • 訊息處理
  • 未分組的使用
  • 分組的使用

使用圖形介面時我們經常會碰到一些選項,如果是多選就是Check Box可以同時選多個內容,單選的話就是Radio Button.

Check Box用法簡介check box一般是綁定到一個布爾變數.

BOOL m_bShowAll;

DDX_Check(pDX,IDC_CHECK_SHOW_ALL,m_bShowAll);

m_bShowAll = FALSE; //表示沒選

m_bShowAll = TRUE;//表示選擇

UpdateData(FALSE); //更改了m_bShowAll的值後記得調用下這函數來更新頁面上的顯示.反過來如果更改了頁面上的check box選項要通過UpdateData();來更新m_bShowAll的值.

 

通過函數直接來操作 設定是checkbox狀態

((CButton*)GetDlgItem(IDC_CHECK_SHOW_ALL))->SetCheck(BST_CHECKED);//設定為選擇上,如果不選則是BST_UNCHECKED,要是還設為Tri_state設為未這狀態就是BST_INDETERMINATE

擷取checkbox狀態

方法1

int ret = ((CButton*)GetDlgItem(IDC_CHECK_SHOW_ALL))->GetCheck(); //0為沒選上,1為選上.未這狀態為2.在者對應的宏分別是

BST_CHECKED, BST_UNCHECKED, BST_INDETERMINATE (未定狀態只有在checkbox屬性Tri_state設為true時才有

方法2

int ret = IsDlgButtonChecked(IDC_CHECK_SHOW_ALL); //選上返回1,未選返回0,未定狀態返回2

訊息處理

當然了有時如果在選上了check box後要做些啥操作的話一般要寫下它對應的訊息處理函數.

afx_msg void OnBnClickedCheckShowAll();

 

ON_BN_CLICKED(IDC_CHECK_SHOW_ALL, OnBnClickedCheckShowAll)

void CCheckTest::OnBnClickedCheckShowAll(){

//添加要處理的相應操作

}

 

Radio Buton綁定變數時用DDX_Radio

它跟check box類似,只不過它表示單選.一次只能選一個.當其中一個選上時會自動讓其他的不選上.

Radio Button的使用中最令人迷糊的就是分組的使用.

未分組的使用

如果所有radio button的屬性設定中group都是False,這種情況是最簡單.

如果你在頁面中直接選的話,選上一個後另外的會自動變為未選.但是radio button如果像上面check box一樣使用SetCheck來設定.那可能會出現兩個同時選上的情況.所以得顯式的去讓其他的變為未選.

當然如果只是兩三個選項你手動寫代碼實現也沒啥,但如果來個幾十個,那就會讓你頭暈的.

分組的使用

先來說下Tab順序

一般的如果頁面上有很多控制項,我們最好給它們排個序,按下Ctrl + D,每個控制項上會顯示一個數字出來.你可以改變那些數字順序.確定了這些順序後.你以後可以通過Tab鍵來按順序切換到不同的控制項以獲得焦點.

 

分成一組

假如有4個radio button,把tab順序排一位的(假設是IDC_RADIO_SEL屬性設:groupt為True,Auto為True,TabStop為True.然後後面三個radio button的group全設為False.

IDC_RADIO_SEL綁定一個int類型變數,m_nSelection,一般在建構函式中把它初始化為0,表示分組中的第一個button選上.m_nSelection如果為1,2,3則代表後面三個button哪一個被選上.

 

分成多組

分組是這樣分的,從第一個radio button的group設為True的開始按Tab順序往後找,再次碰到group為True就是表示一組的結束,另外一組的開始.所以假如有R1,R2,R3,R4這4個radio button的話.想把R1,R2分一組,另兩個一組則可以這樣

先排好Tab順序,然後把R1的group設為True,R2的為False

R3的group設為True,R4的為False.

然後把R1綁定變數m_nOne;

R2綁定變數m_nTwo

 

訊息處理

跟check box一樣,都是ON_BN_CLICKED(ID_XXXX,FunXXX)這樣指定一個回呼函數.跟Button的訊息處理也完全一樣.

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.