Udostępnij przez


Wtyczka strony ustawień

Interfejs użytkownika dla właściwości urządzenia można podać, pisząc stronę właściwości jako wtyczkę dla serwera proxy KS. W tym temacie wyjaśniono, jak napisać taką wtyczkę. Najpierw zarejestruj obiekt zgodnie z opisem w temacie Rejestrowanie wtyczek serwera proxy KS.

Następnie zadeklaruj szablon fabryki dla filtru. Szablon fabryki to klasa C++, która zawiera informacje dotyczące klasy fabryki.

W biblioteki DLL zadeklaruj globalną tablicę obiektów CFactoryTemplate— jedną dla każdego filtru lub składnika COM w dll. Jeśli masz tylko jedną stronę właściwości, utwórz tylko jeden obiekt w tablicy.

Dla każdego obiektu wygeneruj identyfikator GUID dla identyfikatora klasy (CLSID) i zapisz wpis w deklaracji.

Tablica musi mieć nazwę g_Templates:

CFactoryTemplate g_Templates[] =
{
    {
        L"My Property Page",
        &CLSID_MyPropPage),
        CMyPropPage::CreateInstance,
        NULL,
        NULL
    },
};

Strona właściwości powinna pochodzić z klasy CBasePropertyPage i powinna zastąpić kilka metod CBasePropertyPage:

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 );
};

Aby zainicjować stronę właściwości, arkusz właściwości hostingu wywołuje IPropertyPage::SetPageSite. To wywołanie powoduje wywołanie metody OnConnect wtyczki. W momencie tego wywołania strona właściwości została połączona z filtrem, ale strona właściwości nie została jeszcze wyświetlona.

Parametr przekazany w wywołaniu metody OnConnect jest interfejsem serwera proxy KS, który następnie może być odpytywany o wskaźnik do IKsPropertySet. Następnie można wywołać IKsPropertySet::Get i IKsPropertySet::Set, aby manipulować uwidocznionymi właściwościami sterownika.

Musisz również podać metodę CreateInstance . System wywołuje metodę strony właściwości w celu utworzenia wystąpienia strony właściwości. Ta metoda powinna wywołać konstruktor twojej klasy, aby utworzyć jej wystąpienie.

Konstruktor otrzymuje wskaźnik do zewnętrznego nieznanego interfejsu, który w tym przypadku jest proxy KS.

Metoda OnDisconnect strony właściwości jest wywoływana, gdy strona właściwości powinna zwolnić skojarzony obiekt. To wywołanie zwrotne powinno zmniejszyć liczbę referencji wskaźnika do interfejsu serwera proxy KS poprzez wywołanie metody Release.