MFC ActiveX 控制項:加入另一個自訂屬性頁
有時候,ActiveX 控制項會有比在一個屬性頁面上可合理調整的更多屬性。 在此情況下,您可以將屬性頁新增至 ActiveX 控制項以顯示這些屬性。
本文討論將新的屬性頁新增至已至少有一個屬性頁的 ActiveX 控制項。 如需新增股票屬性頁的詳細資訊(字型、圖片或色彩),請參閱 MFC ActiveX 控制項:使用股票屬性頁 一文 。
下列程式使用 ActiveX 控制項精靈所建立的範例 ActiveX 控制項架構。 因此,此範例中類別名稱和識別碼是唯一的。
如需在 ActiveX 控制項中使用屬性頁的詳細資訊,請參閱下列文章:
-
注意
強烈建議新的屬性頁遵守 ActiveX 控制項屬性頁的大小標準。 股票圖片和色彩屬性頁測量 250x62 對話方塊單位 (DLU)。 標準字型屬性頁是 250x110 DLL。 ActiveX 控制項精靈所建立的預設屬性頁會使用 250x62 DLU 標準。
在專案中插入新的屬性頁範本
開啟控制項專案後,在專案工作區中開啟 [資源檢視]。
以滑鼠右鍵按一下 [資源檢視] 以開啟快捷方式功能表,然後按一下 [ 新增資源 ]。
展開 [對話方塊] 節點,然後選取 [IDD_OLE_PROPPAGE_SMALL ]。
按一下 [ 新增 ] 將資源新增至您的專案。
選取新的屬性頁範本以重新整理 [屬性 ] 視窗 (在 [資源檢視 ] 中 )。
輸入 ID 屬性的新值 。 此範例使用 IDD_PROPPAGE_NEWPAGE 。
按一下工具列上的 [ 儲存 ]。
建立新範本與類別的關聯
開啟 [類別檢視]。
以滑鼠右鍵按一下 [類別檢視] 以開啟快捷方式功能表。
從捷徑功能表按一下 [新增],然後按一下 [加入類別]。
這會開啟 [新增類別] 對話方塊。
按兩下 MFC 類別 範本。
在 [MFC 類別精靈 ] 的 [ 類別名稱 ] 方塊中,輸入新對話方塊類別的名稱。 (在此範例中為
CAddtlPropPage
。)如果您想要變更檔案名,請按一下 [ 變更 ]。 輸入實作和標頭檔的名稱,或接受預設名稱。
在 [ 基類] 方塊 中,選取
COlePropertyPage
。在 [ 對話方塊識別碼 ] 方塊中,選取 [IDD_PROPPAGE_NEWPAGE ]。
按一下 [完成 ] 以建立 類別。
若要允許控制項的使用者存取這個新的屬性頁,請對控制項的屬性頁識別碼宏區段進行下列變更(位於控制項實作檔中):
BEGIN_PROPPAGEIDS(CMyAxUICtrl, 2)
PROPPAGEID(CMyAxUIPropPage::guid)
PROPPAGEID(CAddtlPropPage::guid)
END_PROPPAGEIDS(CMyAxUICtrl)
請注意,您必須將BEGIN_PROPPAGEIDS宏的第二個參數(屬性頁計數)從 1 增加到 2。
您也必須修改控制項實作檔案 (。要包含標頭的 CPP 檔案 (。新屬性頁類別的 H) 檔案。
下一個步驟涉及建立兩個新的字串資源,以提供新屬性頁的類型名稱和標題。
將新的字串資源新增至屬性頁
開啟控制項專案後,開啟 [資源檢視]。
按兩下 [ 字串資料表 ] 資料夾,然後按兩下您要新增字串的現有字串資料表資源。
這會在視窗中開啟字串資料表。
選取字串資料表結尾的空白行,然後輸入字串的文字或標題:例如「其他屬性頁」。
這會開啟 [字串屬性] 頁面,其中顯示 [標題 ] 和 [識別碼 ] 方塊。 [ 標題 ] 方塊包含您輸入的字串。
在 [ 識別碼 ] 方塊中,選取或輸入字串的識別碼。 當您完成時,請按 Enter 鍵。
本範例會針對新屬性頁的類型名稱使用 IDS_SAMPLE_ADDPAGE 。
針對識別碼重複步驟 3 和 4,針對標題使用 IDS_SAMPLE_ADDPPG_CAPTION 和「其他屬性頁」。
在。新屬性頁類別的 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); }
修改 的建構函式,讓IDS_SAMPLE_ADDPPG_CAPTION傳遞至
COlePropertyPage
建構CAddtlPropPage
函式,如下所示:CAddtlPropPage::CAddtlPropPage() : COlePropertyPage(IDD, IDS_SAMPLE_ADDPPG_CAPTION) { }
進行必要的修改之後,請重建專案,並使用測試容器來測試新的屬性頁。 如需測試容器存取方法的詳細資訊,請參閱 以測試容器測試屬性和事件 。