首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

VS2010 MFC屬性表單創建完整步驟:從資源插入到向導模式啟用

     編輯:程式設計綜合問答

MFC 屬性表單 / 向導構建全流程

步驟 1:插入屬性頁對話框資源

  • 資源視圖 → 右鍵 `Dialog` → `Insert Dialog` → 選擇 `Property Page` (帶 `IDD_PROPPAGE_XXX`)。
  • 根據需要插入 2-3 個頁面 (如 `General`、`Advanced`、`Network`)。
  • 在每個頁面拖放控件 (Edit、Combo、Check Box 等),設置 ID (如 `IDC_EDIT_PORT`)。

步驟 2:為每個屬性頁創建類

  • 類視圖 → 右鍵 `Add Class` → `MFC Class` → `CDialogEx` 基類。
  • * 類名:`CGeneralPage`、`CAdvancedPage`... 對應步驟 1 的資源 ID。 * 勾選 `DDX/DDV` 支持,自動生成 `DoDataExchange` 綁定控件變量。

步驟 3:創建屬性表單類

  • `Add Class` → `MFC Class` → 基類選 **`CPropertySheet`** (或 `CPropertySheetEx`)。
  • * 類名:`CMyPropSheet`。 * 在構造函數中調用 `AddPage(&m_page1)` 等添加頁面對象。

步驟 4:定義頁面對象並添加到表單


// CMyPropSheet.h
class CMyPropSheet : public CPropertySheet {
    DECLARE_DYNAMIC(CMyPropSheet)
public:
    CGeneralPage m_page1;
    CAdvancedPage m_page2;
    CNetworkPage m_page3;

    CMyPropSheet(UINT nIDCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0);
    virtual ~CMyPropSheet();
};

// CMyPropSheet.cpp
CMyPropSheet::CMyPropSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)
    : CPropertySheet(nIDCaption, pParentWnd, iSelectPage) {
    AddPage(&m_page1);
    AddPage(&m_page2);
    AddPage(&m_page3);
    // 啟用向導模式 (可選)
    SetWizardMode(); 
}

步驟 5:設置向導模式與頁面激活處理

  • 調用 `SetWizardMode()` 將表單變為向導 (帶「下一步/完成」按鈕)。
  • 在各頁面類中重寫 `OnSetActive()`:
    BOOL CGeneralPage::OnSetActive() {
        CPropertySheet* pSheet = (CPropertySheet*)GetParent();
        pSheet->SetWizardButtons(PSWIZB_NEXT); // 僅顯示「下一步」
        return CPropertyPage::OnSetActive();
    }

步驟 6:主界面按鈕彈出屬性表單


void CMainDlg::OnBnClickedBtnConfig() {
    CMyPropSheet sheet(IDS_PROPSHEET_CAPTION, this);
    sheet.DoModal(); // 模態對話框
}

關鍵點總結

  • **資源類同步**:對話框資源 ID、類名、頭文件包含關係必須一一對應。
  • **頁面對象作為成員變量** 定義在 Sheet 類中,生命周期隨 Sheet 自動管理。
  • **向導模式** 需 `SetWizardMode()` + 各頁 `OnSetActive()` 設置按鈕狀態 (`PSWIZB_NEXT`/`BACK`/`FINISH`/`DISABLEDFINISH`)。
  • **數據交換**:頁面類 `DoDataExchange` 綁定控件,Sheet 關閉時自動 `UpdateData(TRUE)` 回寫。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved