1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- //------------------------------------------------------------------------------
- // File: CProp.h
- //
- // Desc: DirectShow base classes.
- //
- // Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
- //------------------------------------------------------------------------------
- #ifndef __CPROP__
- #define __CPROP__
- // Base property page class. Filters typically expose custom properties by
- // implementing special control interfaces, examples are IDirectDrawVideo
- // and IQualProp on renderers. This allows property pages to be built that
- // use the given interface. Applications such as the ActiveMovie OCX query
- // filters for the property pages they support and expose them to the user
- //
- // This class provides all the framework for a property page. A property
- // page is a COM object that supports IPropertyPage. We should be created
- // with a resource ID for the dialog which we will load when required. We
- // should also be given in the constructor a resource ID for a title string
- // we will load from the DLLs STRINGTABLE. The property page titles must be
- // stored in resource files so that they can be easily internationalised
- //
- // We have a number of virtual methods (not PURE) that may be overriden in
- // derived classes to query for interfaces and so on. These functions have
- // simple implementations here that just return NOERROR. Derived classes
- // will almost definately have to override the message handler method called
- // OnReceiveMessage. We have a static dialog procedure that calls the method
- // so that derived classes don't have to fiddle around with the this pointer
- class AM_NOVTABLE CBasePropertyPage : public IPropertyPage, public CUnknown
- {
- protected:
- LPPROPERTYPAGESITE m_pPageSite; // Details for our property site
- HWND m_hwnd; // Window handle for the page
- HWND m_Dlg; // Actual dialog window handle
- BOOL m_bDirty; // Has anything been changed
- int m_TitleId; // Resource identifier for title
- int m_DialogId; // Dialog resource identifier
- static INT_PTR CALLBACK DialogProc(HWND hwnd,
- UINT uMsg,
- WPARAM wParam,
- LPARAM lParam);
- private:
- BOOL m_bObjectSet ; // SetObject has been called or not.
- public:
- CBasePropertyPage(__in_opt LPCTSTR pName, // Debug only name
- __inout_opt LPUNKNOWN pUnk, // COM Delegator
- int DialogId, // Resource ID
- int TitleId); // To get tital
- #ifdef UNICODE
- CBasePropertyPage(__in_opt LPCSTR pName,
- __inout_opt LPUNKNOWN pUnk,
- int DialogId,
- int TitleId);
- #endif
- virtual ~CBasePropertyPage() { };
- DECLARE_IUNKNOWN
- // Override these virtual methods
- virtual HRESULT OnConnect(IUnknown *pUnknown) { return NOERROR; };
- virtual HRESULT OnDisconnect() { return NOERROR; };
- virtual HRESULT OnActivate() { return NOERROR; };
- virtual HRESULT OnDeactivate() { return NOERROR; };
- virtual HRESULT OnApplyChanges() { return NOERROR; };
- virtual INT_PTR OnReceiveMessage(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
- // These implement an IPropertyPage interface
- STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, __deref_out void **ppv);
- STDMETHODIMP_(ULONG) NonDelegatingRelease();
- STDMETHODIMP_(ULONG) NonDelegatingAddRef();
- STDMETHODIMP SetPageSite(__in_opt LPPROPERTYPAGESITE pPageSite);
- STDMETHODIMP Activate(HWND hwndParent, LPCRECT prect,BOOL fModal);
- STDMETHODIMP Deactivate(void);
- STDMETHODIMP GetPageInfo(__out LPPROPPAGEINFO pPageInfo);
- STDMETHODIMP SetObjects(ULONG cObjects, __in_ecount_opt(cObjects) LPUNKNOWN *ppUnk);
- STDMETHODIMP Show(UINT nCmdShow);
- STDMETHODIMP Move(LPCRECT prect);
- STDMETHODIMP IsPageDirty(void) { return m_bDirty ? S_OK : S_FALSE; }
- STDMETHODIMP Apply(void);
- STDMETHODIMP Help(LPCWSTR lpszHelpDir) { return E_NOTIMPL; }
- STDMETHODIMP TranslateAccelerator(__inout LPMSG lpMsg) { return E_NOTIMPL; }
- };
- #endif // __CPROP__
|