123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- //------------------------------------------------------------------------------
- // 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__
|