www.pudn.com > PropBrowser_demo.zip > PBDemoCtrl.h


// PBDemoCtrl.h : Declaration of the CPBDemoCtrl 
 
#ifndef __PBDEMOCTRL_H_ 
#define __PBDEMOCTRL_H_ 
 
#include "resource.h"       // main symbols 
#include "DemoCtrlPage.h" 
 
 
 
class ATL_NO_VTABLE CFontNotifyImpl : public CComObjectRootEx, 
public IPropertyNotifySink 
	{ 
	public: 
        CFontNotifyImpl(){} 
		~CFontNotifyImpl(){} 
		BEGIN_COM_MAP(CFontNotifyImpl) 
			COM_INTERFACE_ENTRY(IPropertyNotifySink) 
			END_COM_MAP() 
			 
			DWORD m_FontNotifyCookie; 
		//  void SetParent(CRSCalculator* pParent){m_pParent = pParent;} 
		//    *m_pParent; 
		 
		 
		STDMETHOD(OnChanged)(DISPID dispid){return S_OK;} 
		STDMETHOD(OnRequestEdit)(DISPID dispid){return S_OK;} 
		 
	}; 
 
///////////////////////////////////////////////////////////////////////////// 
// CPBDemoCtrl 
class ATL_NO_VTABLE CPBDemoCtrl :  
public CComObjectRootEx, 
public CComCoClass, 
public CComControl, 
public CStockPropImpl, 
public IProvideClassInfo2Impl<&CLSID_PBDemoCtrl, NULL, &LIBID_PROPBROWSERLib>, 
public IPersistStreamInitImpl, 
public IPersistStorageImpl, 
public IQuickActivateImpl, 
public IOleControlImpl, 
public IOleObjectImpl, 
public IOleInPlaceActiveObjectImpl, 
public IViewObjectExImpl, 
public IOleInPlaceObjectWindowlessImpl, 
public IDataObjectImpl, 
public ISpecifyPropertyPagesImpl, 
public IPropertyNotifySinkCP, 
public IPerPropertyBrowsingImpl, 
public IConnectionPointContainerImpl 
 
	{ 
	public: 
		CPBDemoCtrl() 
			{ 
			m_bEnabled = TRUE; 
			m_FillStyle = sSolid; 
			m_clrTextColor = 0; 
			m_nAppearance = 0; 
			m_Number = 0; 
			CComObject::CreateInstance(&m_pFontNotifySink); 
			if(m_pFontNotifySink) 
				m_pFontNotifySink->AddRef(); 
			} 
		~CPBDemoCtrl() 
			{ 
			if(m_pFontNotifySink) 
				m_pFontNotifySink->Release(); 
 
			} 
		 
		DECLARE_REGISTRY_RESOURCEID(IDR_PBDEMOCTRL) 
			 
			BEGIN_COM_MAP(CPBDemoCtrl) 
			COM_INTERFACE_ENTRY(IPBDemoCtrl) 
			COM_INTERFACE_ENTRY(IDispatch) 
			COM_INTERFACE_ENTRY_IMPL(IViewObjectEx) 
			COM_INTERFACE_ENTRY_IMPL_IID(IID_IViewObject2, IViewObjectEx) 
			COM_INTERFACE_ENTRY_IMPL_IID(IID_IViewObject, IViewObjectEx) 
			COM_INTERFACE_ENTRY_IMPL(IOleInPlaceObjectWindowless) 
			COM_INTERFACE_ENTRY_IMPL_IID(IID_IOleInPlaceObject, IOleInPlaceObjectWindowless) 
			COM_INTERFACE_ENTRY_IMPL_IID(IID_IOleWindow, IOleInPlaceObjectWindowless) 
			COM_INTERFACE_ENTRY_IMPL(IOleInPlaceActiveObject) 
			COM_INTERFACE_ENTRY_IMPL(IOleControl) 
			COM_INTERFACE_ENTRY_IMPL(IOleObject) 
			COM_INTERFACE_ENTRY_IMPL(IQuickActivate) 
			COM_INTERFACE_ENTRY_IMPL(IPersistStorage) 
			COM_INTERFACE_ENTRY_IMPL(IPersistStreamInit) 
			COM_INTERFACE_ENTRY_IMPL(ISpecifyPropertyPages) 
			COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer) 
			COM_INTERFACE_ENTRY_IMPL(IDataObject) 
			COM_INTERFACE_ENTRY_IMPL(IPerPropertyBrowsing) 
			COM_INTERFACE_ENTRY(IProvideClassInfo) 
			COM_INTERFACE_ENTRY(IProvideClassInfo2) 
			END_COM_MAP() 
			 
	BEGIN_PROPERTY_MAP(CPBDemoCtrl) 
		// Example entries 
		// PROP_ENTRY("Property Description", dispid, clsid) 
		//	PROP_PAGE(CLSID_StockColorPage) 
		PROP_PAGE(CLSID_DemoCtrlPage) 
		PROP_ENTRY(_T("Text"),1,CLSID_DemoCtrlPage) 
		PROP_ENTRY(_T("Number"),2,CLSID_DemoCtrlPage) 
		PROP_ENTRY(_T("TextColor"),3,CLSID_DemoCtrlPage) 
		PROP_ENTRY(_T("Font"),4,CLSID_DemoCtrlPage) 
		PROP_ENTRY(_T("Picture"),5,CLSID_DemoCtrlPage) 
	END_PROPERTY_MAP() 
			 
			 
			BEGIN_CONNECTION_POINT_MAP(CPBDemoCtrl) 
			CONNECTION_POINT_ENTRY(IID_IPropertyNotifySink) 
			END_CONNECTION_POINT_MAP() 
			 
			BEGIN_MSG_MAP(CPBDemoCtrl) 
			MESSAGE_HANDLER(WM_PAINT, OnPaint) 
			MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus) 
			MESSAGE_HANDLER(WM_KILLFOCUS, OnKillFocus) 
			END_MSG_MAP() 
			 
			 
			// IViewObjectEx 
			STDMETHOD(GetViewStatus)(DWORD* pdwStatus) 
			{ 
			ATLTRACE(_T("IViewObjectExImpl::GetViewStatus\n")); 
			*pdwStatus = VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE; 
			return S_OK; 
			} 
		 
		// IPBDemoCtrl 
	public: 
		BOOL m_bEnabled; 
		STDMETHOD(get_Enabled)(/*[out, retval]*/ VARIANT_BOOL *pVal); 
		STDMETHOD(put_Enabled)(/*[in]*/ VARIANT_BOOL newVal); 
		cDemoFillStyles m_FillStyle; 
		STDMETHOD(get_FillStyle)(/*[out, retval]*/ cDemoFillStyles *pVal); 
		STDMETHOD(put_FillStyle)(/*[in]*/ cDemoFillStyles newVal); 
		short m_nAppearance; 
		STDMETHOD(get_Appearance)(/*[out, retval]*/ short *pVal); 
		STDMETHOD(put_Appearance)(/*[in]*/ short newVal); 
		long m_Number; 
		STDMETHOD(get_TextColor)(/*[out, retval]*/ OLE_COLOR *pVal); 
		STDMETHOD(put_TextColor)(/*[in]*/ OLE_COLOR newVal); 
		STDMETHOD(get_Number)(/*[out, retval]*/ long *pVal); 
		STDMETHOD(put_Number)(/*[in]*/ long newVal); 
		STDMETHOD(SetClientSite)(LPOLECLIENTSITE pSite); 
		STDMETHOD(GetPredefinedStrings)(DISPID dispID, 
			CALPOLESTR* pcaStringsOut, CADWORD* pcaCookiesOut); 
		STDMETHOD(GetPredefinedValue)(DISPID dispID, DWORD dwCookie, VARIANT* pVarOut); 
		STDMETHOD(GetDisplayString)(DISPID dispID, BSTR* pbstr); 
 
		// just helper 
		STDMETHOD(InitPredefinedStrings)(CALPOLESTR* pcaStringsOut, 
		CADWORD* pcaCookiesOut, long numElems); 
		HRESULT OnDraw(ATL_DRAWINFO& di); 
		 
		CComObject *m_pFontNotifySink; //holder for sink object	 
		OLE_COLOR m_clrTextColor; 
		CComPtr m_pFont; 
		CComPtr m_pPicture; 
		CComBSTR m_bstrText; 
		 
	}; 
 
#endif //__PBDEMOCTRL_H_