VC 6 0中使用核取方塊和單選鈕

2021-09-30 06:40:34 字數 3093 閱讀 5481

單選鈕用來表示一系列的互斥選項,這些互斥項常常被分成若干個組,每組僅允許使用者選擇乙個選項;核取方塊與單選按鈕相象,不同之處是核取方塊代表多重選擇,使用者可以選擇乙個或多個選項。

對話方塊編輯器中各組控制項的對齊

按下ctrl鍵並單擊要對齊的各個控制項,同時選中。最後選中的控制項是對齊的基準,仔細觀察,它周圍的8個小方框是實心的,而其它被選控制項周圍的小方框是空心的。

在layout選單中選擇make same size的both,可以統一控制項尺寸,所選控制項尺寸與基準控制項相同。在layout選單中選擇align的left,可以使所有被選控制項的左邊與基準控制項對齊。選擇layout選單中align的space evenly的down,可以使被選控制項垂直間距相等。

單選按鈕和核取方塊的使用

為了方便說明,我們假定建立了基於對話方塊的mfc應用程式,工程名為radioandcheckbutton。對話方塊資源加入兩個組框 ,第乙個組框『性別』,內有『男』,『女』兩個單選鈕;第二個組框是『愛好』,內有『足球』『排球』『藍球』三個核取方塊,如下表:

控制項型別id標題(caption)其它屬性

組框預設

性別預設

單選鈕idc_***1

男group

單選鈕idc_***2女預設

組框預設

愛好預設

核取方塊idc_hobby1

足球預設

核取方塊idc_hobby2

排球預設

核取方塊idc_hobby3

藍球預設

設定控制項的tab order

單擊layout選單下的tab order命令,設定控制項的tab鍵順序(tab order),保證單選鈕的tab order連續。

以tab order為序,從group屬性為真的控制項開始(包括該控制項),到下乙個group屬性為真的控制項結束(不包括該控制項),所有的這些控制項將組成乙個組。對於單選鈕,同一組內同時只能有乙個處於被選中狀態。對於由資源編輯器生成的單選按鈕控制項,在預設情況由windows自動處理同組控制項之間的互斥關係。

具體使用單選鈕和核取方塊

1、呼叫 cbutton的成員函式setcheck設定單選鈕和核取方塊的選中狀態。該成員函式帶有乙個型別為整形的引數,該引數為0表示清除選中按鈕的選中狀態,引數為1表示設定選中按鈕的選中狀態。引數為2表示把三態核取方塊設為不確定狀態。

核取方塊的tristate屬性:建立三態核取方塊。除了處於「選中」和「不選中」狀態外,三態核取方塊還可以處於變灰狀態。通常,核取方塊的變灰狀態表示其選中狀態不確定。在很多軟體的安裝程式中,變灰往往表示僅選中該元件的一部分。

注意,如果我們在程式中呼叫setcheck設定同一組中某一單選鈕為選中狀態,並不意味著同時清除同一組中其它單選鈕的選中狀態。否則,將導致同一組中的兩個按鈕同時處於選中狀態。這是應該避免的。因此,如果我們通過**改變了單選鈕的選中狀態,一定要記得同時清除同組的其它單選鈕的選中狀態。

2、呼叫 cbutton的成員函式getcheck返回單選鈕的選中狀態。該函式的函式原型是

int getcheck( ) const;

返回值可以是0、1、2,分別代表按鈕處於未選中狀態、選中狀態或中間狀態(對三態核取方塊而言)。

3、呼叫類cwnd的成員函式getcheckedradiobutton返回同一組單選鈕中哪乙個被選中。該成員函式原型如下:

int getcheckedradiobutton(int nidfirstbutton,int nidlastbutton);

第乙個引數nidfirstbutton是同一組中的第乙個單選鈕控制項的id,nidlastbutton是同一組中最後乙個單選鈕控制項的id。成員函式getcheckedradiobutton返回指定組中所選中的單選鈕的id,如果沒有按扭被選中,則返回0。

注意,若干個單選鈕是否屬於同一組是以其tab順序來排定的,而getcheckedradiobutton函式是以id順序來檢查按鈕的選定狀態的。因此,如果傳遞給函式getcheckedradiobutton的第乙個引數的值大於第二個引數的值時,其返回值總是為0,而事實上由這兩個引數指定的單選鈕的tab順序可能恰恰相反。因此,一般情況下我們應該盡量保證同一組單選鈕的資源id是連續遞增的。通常這些資源id是在標頭檔案resource.h中定義的。如果你同一組的單選鈕不是一次建立的,那麼它們的資源id可能不是連續遞增的,甚至可能是相反的。我們可以手動的修改資源標頭檔案中的巨集定義,以保證getcheckedradiobutton函式得到正確的結果。

例:

uint n***=getcheckedradiobutton(idc_***1,idc_***2);

switch(n***)

}afx_msg_map之後加入

on_control_range(bn_clicked,idc_***1,idc_***2,on***clicked)

然後在對話方塊類的標頭檔案的afx_msg 塊中宣告訊息處理函式,

……

//}afx_msg

afx_msg void on***clicked (uint ncmdid); 

declare_message_map()

……

最後,在對話方塊類所在cpp檔案的最後插入訊息處理函式,如下所示:

cradioandcheckbuttondialog:: on***clicked,

void cradioandcheckbuttondialog:: on***clicked (uint ncmdid)  

6、使用isdlgbuttonchecked 函式判斷單選鈕或核取方塊是否被選中

cwnd::isdlgbuttonchecked函式,用來判斷單選按鈕或檢查框是否被選擇,該函式的宣告為

uint isdlgbuttonchecked(int nidbutton) const;
引數nidbutton為按鈕的id。若按鈕被選擇,則函式返回1,否則返回0,若按鈕處於不確定狀態,則返回值為2。

……

if(isdlgbuttonchecked(idc_***1)) 

……

以上是使用單選鈕和核取方塊最常用的幾種方法。

VC 6 0中使用核取方塊和單選鈕

單選鈕用來表示一系列的互斥選項,這些互斥項常常被分成若干個組,每組僅允許使用者選擇乙個選項 核取方塊與單選按鈕相象,不同之處是核取方塊代表多重選擇,使用者可以選擇乙個或多個選項。對話方塊編輯器中各組控制項的對齊 按下ctrl鍵並單擊要對齊的各個控制項,同時選中。最後選中的控制項是對齊的基準,仔細觀察...

使用jQuery實現單選框和核取方塊以及select

一 jquery實現單選框並選中value 2 的項 html type radio name radio value 1 1 type radio name radio value 2 2 type radio name radio value 3 3js 實現 jquery input type...

VC6 0中使用64位整型

vc6.0通常用於編寫32位的程式,但是偶爾也需要用到64位整型以實現更精確的計算,在vc6.0中64位整型是用 int64定義的,如下為使用該型別資料計算階乘求和的乙個例子。需要注意的是printf要輸出64位整型數,引數應為 i64u。include int main printf i64u n...