Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
U kunt een gebruikersinterface voor apparaateigenschappen opgeven door een eigenschappenpagina te schrijven als een invoegtoepassing voor KS-proxy. In dit onderwerp wordt uitgelegd hoe u een dergelijke invoegtoepassing schrijft. Registreer eerst uw object zoals beschreven in KS Proxy-invoegtoepassingen registreren.
Declareer vervolgens de fabriekssjabloon voor uw filter. Een fabriekssjabloon is een C++-klasse die informatie bevat voor de klassefactory.
Declareer in uw DLL een globale matrix van CFactoryTemplate-objecten, één voor elk filter of COM-onderdeel in uw DLL. Als u slechts één eigenschappenpagina hebt, maakt u slechts één object in de matrix.
Genereer voor elk object een GUID voor de klasse-id (CLSID) en geef een vermelding op in de declaratie.
De matrix moet de naam g_Templates hebben:
CFactoryTemplate g_Templates[] =
{
{
L"My Property Page",
&CLSID_MyPropPage),
CMyPropPage::CreateInstance,
NULL,
NULL
},
};
De eigenschappenpagina moet zijn afgeleid van de klasse CBasePropertyPage en moet verschillende methoden van CBasePropertyPage overschrijven:
class CMyPropPage: public CBasePropertyPage
{
public:
// creation routine returns ptr to new prop pg as a CUnknown
static CUnknown* CreateInstance( LPUNKNOWN piOuterUnknown, HRESULT* phResult );
// overridden methods:
HRESULT OnConnect( IUnknown *punk);
HRESULT OnDisconnect();
HRESULT OnApplyChanges();
HRESULT OnActivate();
HRESULT OnDeactivate();
INT_PTR OnReceiveMessage( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
private:
CMyPropPage ( LPUNKNOWN piOuterUnknown );
};
Als u de eigenschappenpagina wilt initialiseren, roept het eigenschappenvenster IPropertyPage::SetPageSite aan. Deze aanroep resulteert in een aanroep van de OnConnect-methode van de invoegtoepassing. Op het moment van deze aanroep is de eigenschappenpagina verbonden met het filter, maar de eigenschappenpagina is nog niet weergegeven.
De parameter die is opgegeven in de aanroep van OnConnect , is de interface voor KS-proxy, die vervolgens kan worden opgevraagd voor een aanwijzer naar IKsPropertySet. Vervolgens kunt u IKsPropertySet::Get en IKsPropertySet::Set aanroepen om de weergegeven eigenschappen van het stuurprogramma te bewerken.
U moet ook een CreateInstance-methode opgeven. Het systeem roept de methode van een eigenschapspagina aan om een exemplaar van de eigenschapspagina te maken. Met deze methode moet de constructor van uw klasse worden aangeroepen om deze te instantiëren.
De constructor ontvangt een aanwijzer naar de buitenste onbekende interface, die in dit geval KS-proxy is.
De onDisconnect-methode van de eigenschapspagina wordt aangeroepen wanneer de eigenschappenpagina het bijbehorende object moet vrijgeven. Deze callback moet het aantal verwijzingen op de aanwijzer naar de interface naar KS proxy verlagen door de Release-methode aan te roepen.