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