MFC ActiveX 控制項:加入另一個自訂屬性頁

有時候,ActiveX 控制項會有比在一個屬性頁面上可合理調整的更多屬性。 在此情況下,您可以將屬性頁新增至 ActiveX 控制項以顯示這些屬性。

本文討論將新的屬性頁新增至已至少有一個屬性頁的 ActiveX 控制項。 如需新增股票屬性頁的詳細資訊(字型、圖片或色彩),請參閱 MFC ActiveX 控制項:使用股票屬性頁 一文

下列程式使用 ActiveX 控制項精靈所建立的範例 ActiveX 控制項架構。 因此,此範例中類別名稱和識別碼是唯一的。

如需在 ActiveX 控制項中使用屬性頁的詳細資訊,請參閱下列文章:

在專案中插入新的屬性頁範本

  1. 開啟控制項專案後,在專案工作區中開啟 [資源檢視]。

  2. 以滑鼠右鍵按一下 [資源檢視] 以開啟快捷方式功能表,然後按一下 [ 新增資源 ]。

  3. 展開 [對話方塊] 節點,然後選取 [IDD_OLE_PROPPAGE_SMALL ]。

  4. 按一下 [ 新增 ] 將資源新增至您的專案。

  5. 選取新的屬性頁範本以重新整理 [屬性 ] 視窗 (在 [資源檢視 ] 中 )。

  6. 輸入 ID 屬性的新值 。 此範例使用 IDD_PROPPAGE_NEWPAGE

  7. 按一下工具列上的 [ 儲存 ]。

建立新範本與類別的關聯

  1. 開啟 [類別檢視]。

  2. 以滑鼠右鍵按一下 [類別檢視] 以開啟快捷方式功能表。

  3. 從捷徑功能表按一下 [新增],然後按一下 [加入類別]

    這會開啟 [新增類別] 對話方塊

  4. 按兩下 MFC 類別 範本。

  5. 在 [MFC 類別精靈 ] 的 [ 類別名稱 ] 方塊中,輸入新對話方塊類別的名稱。 (在此範例中為 CAddtlPropPage 。)

  6. 如果您想要變更檔案名,請按一下 [ 變更 ]。 輸入實作和標頭檔的名稱,或接受預設名稱。

  7. 在 [ 基類] 方塊 中,選取 COlePropertyPage

  8. 在 [ 對話方塊識別碼 ] 方塊中,選取 [IDD_PROPPAGE_NEWPAGE ]。

  9. 按一下 [完成 ] 以建立 類別。

若要允許控制項的使用者存取這個新的屬性頁,請對控制項的屬性頁識別碼宏區段進行下列變更(位於控制項實作檔中):

BEGIN_PROPPAGEIDS(CMyAxUICtrl, 2)
   PROPPAGEID(CMyAxUIPropPage::guid)
   PROPPAGEID(CAddtlPropPage::guid)
END_PROPPAGEIDS(CMyAxUICtrl)

請注意,您必須將BEGIN_PROPPAGEIDS宏的第二個參數(屬性頁計數)從 1 增加到 2。

您也必須修改控制項實作檔案 (。要包含標頭的 CPP 檔案 (。新屬性頁類別的 H) 檔案。

下一個步驟涉及建立兩個新的字串資源,以提供新屬性頁的類型名稱和標題。

將新的字串資源新增至屬性頁

  1. 開啟控制項專案後,開啟 [資源檢視]。

  2. 按兩下 [ 字串資料表 ] 資料夾,然後按兩下您要新增字串的現有字串資料表資源。

    這會在視窗中開啟字串資料表。

  3. 選取字串資料表結尾的空白行,然後輸入字串的文字或標題:例如「其他屬性頁」。

    這會開啟 [字串屬性] 頁面,其中顯示 [標題 ] 和 [識別碼 ] 方塊。 [ 標題 ] 方塊包含您輸入的字串。

  4. 在 [ 識別碼 ] 方塊中,選取或輸入字串的識別碼。 當您完成時,請按 Enter 鍵。

    本範例會針對新屬性頁的類型名稱使用 IDS_SAMPLE_ADDPAGE

  5. 針對識別碼重複步驟 3 和 4,針對標題使用 IDS_SAMPLE_ADDPPG_CAPTION 和「其他屬性頁」。

  6. 在。新屬性頁類別的 CPP 檔案 (在此範例 CAddtlPropPage 中, ) 修改 CAddtlPropPage::CAddtlPropPageFactory::UpdateRegistry ,讓 IDS_SAMPLE_ADDPAGE由 AfxOleRegisterPropertyPageClass 傳遞,如下列範例所示:

    BOOL CAddtlPropPage::CAddtlPropPageFactory::UpdateRegistry(BOOL bRegister)
    {
       if (bRegister)
          return AfxOleRegisterPropertyPageClass(AfxGetInstanceHandle(),
             m_clsid, IDS_SAMPLE_ADDPAGE);
       else
          return AfxOleUnregisterClass(m_clsid, NULL);
    }
    
  7. 修改 的建構函式,讓IDS_SAMPLE_ADDPPG_CAPTION傳遞至 COlePropertyPage 建構 CAddtlPropPage 函式,如下所示:

    CAddtlPropPage::CAddtlPropPage() :
       COlePropertyPage(IDD, IDS_SAMPLE_ADDPPG_CAPTION)
    {
    
    }
    

進行必要的修改之後,請重建專案,並使用測試容器來測試新的屬性頁。 如需測試容器存取方法的詳細資訊,請參閱 以測試容器測試屬性和事件

另請參閱

MFC ActiveX 控制項