VS2015 MFC属性页孙鑫笔记
/************************創(chuàng)建屬性頁表單*********************************************/
一 創(chuàng)建單文檔程序
二 切換到資源視圖通過右鍵添加資源,添加三個(gè)DIALOG對(duì)話框,DIALOG選擇 IDD_PROPPAGE_LARGE。修改ID:IDD_PROP1,IDD_PROP2,IDD_PROP3。為每個(gè)對(duì)話框增加設(shè)計(jì)所需控件
三 為資源IDD_PROP1,IDD_PROP2,IDD_PROP3增加對(duì)應(yīng)的MFC類:CProp1,CProp2,CProp3,它們都繼承自CPropertyPage
四 創(chuàng)建一個(gè)集成CProp1,CProp2,CProp3屬性頁的屬性表單類CpropSheet,它繼承自CPropertySheet,為它增加三個(gè)public 類型為CProp1,CProp2,CProp3,變量為:m_prop1,m_prop2,m_prop3三個(gè)成員變量。
???? 在CpropSheet的構(gòu)造函數(shù)里通過調(diào)用成員函數(shù)AddPage(&m_prop1);AddPage(&m_prop2);AddPage(&m_prop3);
五 使用CpropSheet對(duì)象的DoModal()函數(shù)來顯示屬性頁。至此出現(xiàn)的頁面自動(dòng)帶有三個(gè)CButton類型的按鈕,確定、取消、應(yīng)用。
?
/*************************創(chuàng)建向?qū)?duì)話框*******************************************/
步驟同屬性表單。不同之處在于調(diào)用DoModal()之前,通過CPropertySheet對(duì)象調(diào)用成員函數(shù):SetWizardMode();
CPropSheet propSheet(L"屬性表單A"); //打開頁面后的標(biāo)題 propSheet.SetWizardMode();propSheet.DoModal();//備注 calss CPropSheet : public CPropertySheet此出現(xiàn)的頁面自動(dòng)帶有三個(gè)CButton類型的按鈕,上一步、下一步、取消。三個(gè)頁面都有,但是對(duì)于第一個(gè)頁面,它不應(yīng)該用到上一步,最后一個(gè)頁面不能再有下一步了。既然這三個(gè)按鈕都是CPorpertySheet的,查看MSDN,通過SetWizardButtons(DWORD dFlags)方法設(shè)置所需按鈕。
dFlags:PSWIZB_BACK、PSWIZB_NEXT、PSWIZB_FINISH、PSWIZB_DISABLEDFINISH。
要設(shè)置按鈕,需要在屬性頁CPropertyPage中的OnSetActive()中進(jìn)行修改。由于CPropertyPage是屬于CPropertySheet的一個(gè)頁面,因此他們之間存在父子關(guān)系。因此Page中,可以調(diào)用GetParent()獲取父指針CWnd類型的,而我們需要操作的是CPropertySheet類型的,因此需要進(jìn)行轉(zhuǎn)換。
?
BOOL CProp1::OnSetActive() {//對(duì)于第一個(gè)頁面,它只有下一步((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_NEXT); //當(dāng)激活這個(gè)頁面的時(shí)候,同樣顯示 “上一步” “下一步”“取消”//不同的是,“上一步”按鈕灰色不可用return CPropertyPage::OnSetActive(); } BOOL CProp2::OnSetActive() { // 中間頁面有上一步,和下一步按鈕((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_BACK|PSWIZB_NEXT);return CPropertyPage::OnSetActive(); } BOOL CProp3::OnSetActive() {// 最后一個(gè)有上一步和完成按鈕((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_BACK|PSWIZB_FINISH);return CPropertyPage::OnSetActive(); }單擊下一步按鈕:在CProp1,CProp2增加OnWizardNext()虛函數(shù)....
?
轉(zhuǎn)載于:https://www.cnblogs.com/zhou8744/p/10600080.html
總結(jié)
以上是生活随笔為你收集整理的VS2015 MFC属性页孙鑫笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 寻找凸包 (Convex Hull)
- 下一篇: JS第三方中间件的延伸