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...