VC中的tab控制項怎麼用

2021-04-20 16:40:54 字數 2464 閱讀 6418

屬性對話方塊不同於普通對話方塊的是它能同時提供多個選項頁,而每頁都可以由資源編輯器

以編輯對話方塊的方式進行編輯,這樣給介面開發帶來了方便。同時使用上也遵守普通對話

框的規則,所以學習起來很方便。屬性對話方塊由兩部分構成:多個屬性頁

(cpropertypage)和屬性對話方塊(cpropertysheet)。

首先需要編輯屬性頁,在資源編輯器中選擇插入,並且選擇屬性對話方塊後就可以插入乙個

屬性頁,如圖,或者選擇插入乙個對話方塊,然後將其屬性中的style設定為child,border

設定為thin也可以,如圖。然後根據這個對話方塊資源生成乙個新類,在選擇基類時選擇

cpropertypage,classwizard會自動生成相關的**。

而對於cpropertysheet也需要生成新類,並且將所有需要加入的屬性頁物件都作為成員變

量。屬性對話方塊也分為有模式和無模式兩種,有模式屬性對話方塊使用domodal()建立,無

模式屬性對話方塊使用create()建立。下面的**演示了如何建立屬性對話方塊並新增屬性頁 :

//修改cpropertysheet派生類的建構函式為如下形式

csheet::csheet()

:cpropertysheet("test sheet", null, 0)

//建立有模式屬性對話方塊

void cmy56_s1dlg::onmod()

//建立無模式屬性對話方塊

void cmy56_s1dlg::onunm()

對於屬性對話方塊可以使用下面的一些成員函式:

cpropertypage* cpropertysheet::getactivepage( )得到當前活動頁的指標。

bool cpropertysheet::setactivepage( int npage )用於設定當前活動頁。

int cpropertysheet::getpagecount()用於得到當前頁總數。

void cpropertysheet::removepage( int npage )用於刪除一頁。

而對於屬性頁來將主要通過過載一些函式來達到控制的目的:

void cpropertypage::onok() 在屬性對話方塊上按下「確定」按鈕後被呼叫

void cpropertypage::oncancel() 在屬性對話方塊上按下「取消」按鈕後被呼叫

void cpropertypage::setmodified( bool bchanged = true ) 設定當前頁面上的資料被

修改標記,這個呼叫可以使「應用」按鈕為允許狀態。

此外利用屬性對話方塊你可以生成嚮導對話方塊,嚮導對話方塊同樣擁有多個屬性頁,但同時只

話框會按照你新增頁面的順序依次顯示所有的頁。在顯示屬性對話方塊前你需要呼叫

void cpropertysheet::setwizardmode()。

使用嚮導對話方塊時需要對屬性頁的bool cpropertypage::onsetactive( )進行過載,並在

其中呼叫void cpropertysheet::setwizardbuttons( dword dwflags )來設定嚮導對話方塊

上顯示的按鈕。dwflags的取值可為以下值的「或」操作:

pswizb_back 顯示「上一步」按鈕

pswizb_next 顯示「下一步」按鈕

pswizb_finish 顯示「完成」按鈕

pswizb_disabledfinish 顯示禁止的「完成」按鈕

void cpropertysheet::setwizardbuttons( dword dwflags )也可以在其他地方呼叫,比

如說在顯示最後一頁時先顯示禁止的「完成」按鈕,在完成某些操作後再顯示允許的「完

成」按鈕。

在使用嚮導對話方塊時可以通過過載一些函式來達到控制的目的:

void cpropertypage::onwizardback() 按下了「上一步」按鈕。返回0表示有系統決定需

要顯示的頁面,-1表示禁止頁面轉換,如果希望顯示乙個特定的頁面需要返回該頁面的id

號。void cpropertypage::ononwizardnext() 按下了「下一步」按鈕。返回值含義與

void cpropertypage::onwizardback()相同。

void cpropertypage::onwizardfinish() 按下了「完成」按鈕。返回false表示不允許繼

續,否則返回true嚮導對話方塊將被結束。

在嚮導對話方塊的domodal()返回值為id_wizfinish或idcancel。下面的**演示了如何創

建並使用嚮導對話方塊:

//建立有模式嚮導對話方塊

void cmy56_s1dlg::onwiz()

//過載bool cpropertypage::onsetactive( )來控制顯示的按鈕

bool cpage1::onsetactive()

bool cpage2::onsetactive()

VC中的Tab控制項使用

vc中的tab控制項呼叫與vb c buider有點不一樣。在vb或c builder中,新增標籤的時候,同時建立了頁面視窗。在vc中,新增頁標籤時,要自己建立無邊框視窗,嵌入到tab控制項中。步驟如下 1 在主視窗上,放上tab控制項,並建立關聯變數m tab 2 在資源中,建立兩個無邊框視窗,建...

VC中的Tab控制項使用

vc中的tab控制項呼叫與vb c buider有點不一樣。在vb或c builder中,新增標籤的時候,同時建立了頁面視窗。在vc中,新增頁標籤時,要自己建立無邊框視窗,嵌入到tab控制項中。步驟如下 1 在主視窗上,放上tab控制項,並建立關聯變數m tab 2 在資源中,建立兩個無邊框視窗,建...

VC控制項TAB切換順序 的控制

vc控制項tab切換順序的控制 在開發乙個小工具的時候,遇到這樣乙個問題 由於控制項新增順序不同,導致最終想要的控制項tab切換順序與想要的順序不符合。經過蒐集資料,發現了控制控制項tab切換順序的方法。如下 1 在自己的工程檔案中,有乙個與工程名相同的資源檔案 rc 該檔案包含了本工程所有使用到的...