Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//------------------------------------------------------------------------------
// 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(TCHAR *pName, // Debug only name
LPUNKNOWN pUnk, // COM Delegator
int DialogId, // Resource ID
int TitleId); // To get tital
#ifdef UNICODE
CBasePropertyPage(CHAR *pName, 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,void **ppv); STDMETHODIMP_(ULONG) NonDelegatingRelease(); STDMETHODIMP_(ULONG) NonDelegatingAddRef(); STDMETHODIMP SetPageSite(LPPROPERTYPAGESITE pPageSite); STDMETHODIMP Activate(HWND hwndParent,LPCRECT prect,BOOL fModal); STDMETHODIMP Deactivate(void); STDMETHODIMP GetPageInfo(LPPROPPAGEINFO pPageInfo); STDMETHODIMP SetObjects(ULONG 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(LPMSG lpMsg) { return E_NOTIMPL; } };
#endif // __CPROP__
|