directshow filter中新增屬性頁

2021-05-24 11:07:09 字數 1698 閱讀 8687

directshow 屬性頁的製作,為cball filter加了乙個屬性頁

具體為分以下步驟:

1.在要顯示屬性的類中繼承現ispecifypropertypages類,並實現此類的getpages()函式。

如下所示:

hresult stdmethodcalltype cbouncingball::getpages(cauuid *ppages)

*(ppages->pelems) = clsid_myballprop;

return s_ok;

}此中(ppages->pelems)指標陣列指向所有的的屬性頁的clsid,而此clsid是此前定義並註冊的。

//屬性頁的guid

define_guid(clsid_myballprop, 0xa9bd4eb, 0xded5,

0x4df0, 0xba, 0xf6, 0x2c, 0xea, 0x23, 0xf5, 0x72, 0x61);

在類工廠的定義:

cfactorytemplate g_templates = ,

2. 支援queryinte***ce,即實現過載cunknown::nondelegatingqueryinte***ce函式

首先在你的filter 中包含declare_iunknown 巨集的宣告:

public:

declare_iunknown;

然後實現暴露介面函式如下:

hresult stdmethodcalltype cbouncingball::nondelegatingqueryinte***ce(refiid riid, void** ppv)

else if (riid == iid_ispecifypropertypages)  //此處為暴露屬性頁的介面,以顯示屬性頁

else

return cbasefilter::nondelegatingqueryinte***ce(riid, ppv);

}3. 建立屬性頁

插入乙個對話方塊資源,並將屬性設定為child,和notitlebar。並加入相關你需要的控制項。

建立乙個繼承cbasepropertypage類的類,首先必須實現的兩個函式為

cunknown* winapi cballprop::createinstance(lpunknown punk, hresult* phr)

return punk;

}實際呼叫建構函式。

cballprop::cballprop(iunknown* punk):

cbasepropertypage(name("grayprop"), punk, idd_dialog_ballpara(對話方塊資料的id), ids_title)此處實際和對話方塊聯絡起來

,m_pballpara(null), m_bisinitialized(false),m_ballcolour(idc_radio_blue)

到此處就你在greatedit中加入你的filter,那麼點右鍵就可以看來你的屬性頁了。

而要完成資料互動還需以下步驟:

4.建立乙個繼承iunknow的虛類如iballpara,並將需要實現的介面函式,在此類中用純虛函式表示。

如:declare_inte***ce_(iballpara,iunknown)

;//宣告兩個簡單的引數設定和獲取的函式。

在主filter(即想引出介面filter)的類中繼承這個虛類,並過載實現這些純虛函式。

mfc中新增屬性表單

1.主對話方塊中 新增乙個類為cpage 2.在page.h中新增cpropertysheet 物件m sheet 3.新建子對話方塊基於idd proppage large 分別為子對話方塊新建類cpage1,cpage2 4.在page.h中新增cpage1,cpage2的物件m page1,m...

category類別中新增屬性

1.不能新增的原因 首先,使用 property的時候,系統會自動生成帶 的成員變數和該變數的setter和getter方法。也就是說,屬性相當於乙個成員變數加getter和setter方法。但是,在類別新增屬性,此時person類裡並沒有新增帶 的成員變數,也沒有實現setter和getter方法...

iOS 在分類中新增屬性

oc 對類的寬展有三中方式,分類,延展,繼承,延展和繼承不必多說。今天就說下如何給分類新增屬性。我們知道oc比較爽的就是可以新增分類,在分類中新增自己喜歡的方法。可能有人會問了,不能新增屬性啊 其實不然。比如我要在乙個按鈕的分類中新增乙個陣列屬性就可以這樣用 inte ce uibutton tra...