CBasePropertyPage 類別
[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]
類別 CBasePropertyPage
是實作屬性頁的抽象類別。 如果您要撰寫支援屬性頁的篩選 (或其他物件) ,請使用這個類別。
受保護的成員變數 | Description |
---|---|
m_bDirty | 指出是否有任何屬性已變更。 |
m_DialogId | 對話方塊的資源識別碼。 |
m_Dlg | 對話方塊視窗的控制碼。 |
m_hwnd | 對話方塊視窗的控制碼。 |
m_pPageSite | 屬性頁網站的 IPropertyPageSite 介面指標。 |
m_TitleId | 包含對話方塊標題之字串的資源識別碼。 |
公用方法 | Description |
CBasePropertyPage | 建構函式方法。 |
~CBasePropertyPage | 解構函式方法。 虛擬。 |
OnActivate | 啟動屬性頁時呼叫。 虛擬。 |
OnApplyChanges | 當使用者將變更套用至屬性頁時呼叫。 虛擬。 |
OnConnect | 提供與屬性頁相關聯之物件的 IUnknown 指標。 虛擬。 |
OnDeactivate | 當對話方塊視窗終結時呼叫。 虛擬。 |
OnDisconnect | 當屬性頁應該釋放相關聯的物件時呼叫。 虛擬。 |
OnReceiveMessage | 當對話方塊收到訊息時呼叫。 虛擬。 |
IPropertyPage 方法 | Description |
啟動 | 建立對話方塊視窗。 |
套用 | 將目前的屬性值套用至與屬性頁相關聯的物件 |
停用 | 終結對話方塊視窗。 |
GetPageInfo | 擷取屬性頁的相關資訊。 |
說明 | 叫用屬性頁說明。 |
IsPageDirty | 指出屬性頁自啟動後變更,或自 最近呼叫 IPropertyPage::Apply之後變更。 |
移動 | 放置對話方塊並調整大小。 |
SetObjects | 提供與屬性頁相關聯之物件的 IUnknown 指標。 |
SetPageSite | 初始化屬性頁。 |
顯示 | 顯示或隱藏對話方塊。 |
TranslateAccelerator | 指示屬性頁處理按鍵。 |
備註
屬性頁是 COM 物件,因此您必須 (CLSID) 產生類別識別碼的 GUID,並在 CFactoryTemplate 陣列中提供專案。 如需詳細資訊,請參閱 DirectShow 和 COM。 下列範例顯示典型的 Class Factory 專案:
CFactoryTemplate g_Templates[] =
{
{
L"My Property Page",
&CLSID_MyPropPage,
CMyProp::CreateInstance,
NULL,
NULL
},
/* Also include the template for your filter (not shown). */
};
您的篩選準則必須公開 ISpecifyPropertyPages 介面。 此介面包含單一方法 GetPages,其會傳回屬性頁的 CLSID。 下列範例示範如何實作此方法:
STDMETHODIMP CMyFilter::GetPages(CAUUID *pPages)
{
if (!pPages) return E_POINTER;
pPages->cElems = 1;
pPages->pElems = reinterpret_cast<GUID*>(CoTaskMemAlloc(sizeof(GUID)));
if (pPages->pElems == NULL)
{
return E_OUTOFMEMORY;
}
*(pPages->pElems) = CLSID_MyPropPage;
return S_OK;
}
請記得同時覆寫篩選的 NonDelegatingQueryInterface 方法。 如需詳細資訊,請參閱 DirectShow 和 COM 和INonDelegatingUnknown。
接下來,在專案中建立對話方塊做為資源,並建立保存對話方塊標題的字串資源。 這兩個資源識別碼都是 CBasePropertyPage 建構函式的參數。 將標題字串保留在資源中,可讓您更輕鬆地當地語系化屬性頁。
CBasePropertyPage類別提供IPropertyPage介面的架構。 此架構會呼叫許多虛擬方法,包括 CBasePropertyPage::OnActivate、 CBasePropertyPage::OnApplyChanges等等。 在基類中,這些方法只會傳回S_OK。 您的衍生類別必須覆寫部分或全部的虛擬方法。 如需詳細資訊,請參閱個別方法的備註。
如需如何使用這個類別建立屬性頁的擴充範例,請參閱 建立篩選屬性頁。
規格需求
需求 | 值 |
---|---|
標頭 |
|
程式庫 |
|