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