屬性對話框不同於普通對話框的是它能同時提供多個選項頁,而每頁都可以由資源編輯器以編輯對話框的方式進行編輯,這樣給界面開發帶來了方便。同時使用上也遵守普通對話框的規則,所以學習起來很方便。屬性對話框由兩部分構成:多個屬性頁(CPropertyPage)和屬性對話框(CPropertySheet)。
首先需要編輯屬性頁,在資源編輯器中選擇插入,並且選擇屬性對話框後就可以插入一個屬性頁,如圖,
或者選擇插入一個對話框,然後將其屬性中的Style設置為Child,Border設置為Thin也可以,如圖。
然後根據這個對話框資源生成一個新類,在選擇基類時選擇CPropertyPage,ClassWizard會自動生成相關的代碼。
而對於CPropertySheet也需要生成新類,並且將所有需要加入的屬性頁對象都作為成員變量。屬性對話框也分為有模式和無模式兩種,有模式屬性對話框使用DoModal()創建,無模式屬性對話框使用Create()創建。下面的代碼演示了如何創建屬性對話框並添加屬性頁:
//修改CPropertySheet派生類的構造函數為如下形式
CSheet::CSheet()
:CPropertySheet("test sheet", NULL, 0)
{
m_page1.Construct(IDD_PAGE_1);
m_page2.Construct(IDD_PAGE_2);
AddPage(&m_page1);
AddPage(&m_page2);
}
//創建有模式屬性對話框
void CMy56_s1Dlg::OnMod()
{
CSheet sheet;
sheet.DoModal();
}
//創建無模式屬性對話框
void CMy56_s1Dlg::OnUnm()
{
C