// XPanel.h : Declaration of the CXPanel #ifndef __XPANEL_H_ #define __XPANEL_H_ #include "resource.h" // main symbols #include "ATLPanel.h" // added - connection point proxy declarations #include #include "ATLPanelCP.h" ///////////////////////////////////////////////////////////////////////////// // CXPanel class ATL_NO_VTABLE CXPanel : public CComObjectRootEx, public CStockPropImpl< CXPanel, IXPanel, &IID_IXPanel, &LIBID_ATLPANELLib >, public CComControl, public IPersistStreamInitImpl, public IOleControlImpl, public IOleObjectImpl, public IOleInPlaceActiveObjectImpl, public IViewObjectExImpl, public IOleInPlaceObjectWindowlessImpl, public IConnectionPointContainerImpl, public IPersistStorageImpl, public ISpecifyPropertyPagesImpl, public IQuickActivateImpl, public IDataObjectImpl, public IProvideClassInfo2Impl< &CLSID_XPanel, &DIID__IXPanelEvents, &LIBID_ATLPANELLib >, public IPropertyNotifySinkCP, public CComCoClass, public IPersistPropertyBagImpl, // added public CProxy_IXPanelEvents< CXPanel > { public: CXPanel() :m_bInitialized(false), m_clrBackColor(0x000088), // added m_clrBorderColor(0x008800), m_clrShadowColor(0x000800), // added m_clrHighlightColor(0x00ff00), m_lBorderWidth(20) // added { } DECLARE_REGISTRY_RESOURCEID(IDR_XPANEL) DECLARE_PROTECT_FINAL_CONSTRUCT() // BEGIN_COM_MAP(CXPanel) COM_INTERFACE_ENTRY(IXPanel) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(IPersistPropertyBag) // added COM_INTERFACE_ENTRY(IViewObjectEx) COM_INTERFACE_ENTRY(IViewObject2) COM_INTERFACE_ENTRY(IViewObject) COM_INTERFACE_ENTRY(IOleInPlaceObjectWindowless) COM_INTERFACE_ENTRY(IOleInPlaceObject) COM_INTERFACE_ENTRY2(IOleWindow, IOleInPlaceObjectWindowless) COM_INTERFACE_ENTRY(IOleInPlaceActiveObject) COM_INTERFACE_ENTRY(IOleControl) COM_INTERFACE_ENTRY(IOleObject) COM_INTERFACE_ENTRY(IPersistStreamInit) COM_INTERFACE_ENTRY2(IPersist, IPersistStreamInit) COM_INTERFACE_ENTRY(IConnectionPointContainer) COM_INTERFACE_ENTRY(ISpecifyPropertyPages) COM_INTERFACE_ENTRY(IQuickActivate) COM_INTERFACE_ENTRY(IPersistStorage) COM_INTERFACE_ENTRY(IDataObject) COM_INTERFACE_ENTRY(IProvideClassInfo) COM_INTERFACE_ENTRY(IProvideClassInfo2) COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer) END_COM_MAP() BEGIN_PROP_MAP(CXPanel) PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4) PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4) PROP_ENTRY("BackColor", DISPID_BACKCOLOR, CLSID_StockColorPage) PROP_ENTRY("Caption", DISPID_CAPTION, CLSID_NULL) PROP_ENTRY("ForeColor", DISPID_FORECOLOR, CLSID_StockColorPage) PROP_ENTRY("Border Width", 1, CLSID_BWPPageDlg) // added PROP_ENTRY("Border Color", 2, CLSID_NULL) // added PROP_ENTRY("Shadow Color", 3, CLSID_NULL) // added PROP_ENTRY("Highlight Color", 4, CLSID_NULL) // added // Example entries // PROP_ENTRY("Property Description", dispid, clsid) // PROP_PAGE(CLSID_StockColorPage) END_PROP_MAP() BEGIN_CONNECTION_POINT_MAP(CXPanel) CONNECTION_POINT_ENTRY(IID_IPropertyNotifySink) CONNECTION_POINT_ENTRY(DIID__IXPanelEvents) END_CONNECTION_POINT_MAP() BEGIN_MSG_MAP(CXPanel) CHAIN_MSG_MAP(CComControl) DEFAULT_REFLECTION_HANDLER() MESSAGE_HANDLER(WM_LBUTTONDOWN, OnLButtonDown) // added END_MSG_MAP() // // IViewObjectEx DECLARE_VIEW_STATUS(0) STDMETHOD(InitNew)(); // added STDMETHOD(Load)(LPSTREAM pStm); // added bool m_bInitialized; // added // IXPanel public: STDMETHOD(get_HighlightColor)(/*[out, retval]*/ OLE_COLOR *pVal); STDMETHOD(put_HighlightColor)(/*[in]*/ OLE_COLOR newVal); STDMETHOD(get_ShadowColor)(/*[out, retval]*/ OLE_COLOR *pVal); STDMETHOD(put_ShadowColor)(/*[in]*/ OLE_COLOR newVal); STDMETHOD(get_BorderColor)(/*[out, retval]*/ OLE_COLOR *pVal); STDMETHOD(put_BorderColor)(/*[in]*/ OLE_COLOR newVal); STDMETHOD(get_BorderWidth)(/*[out, retval]*/ long *pVal); STDMETHOD(put_BorderWidth)(/*[in]*/ long newVal); HRESULT OnDraw(ATL_DRAWINFO& di); // removed stock implementation OLE_COLOR m_clrBackColor; CComBSTR m_bstrCaption; OLE_COLOR m_clrForeColor; long m_lBorderWidth; // added OLE_COLOR m_clrBorderColor; // added OLE_COLOR m_clrShadowColor; // added OLE_COLOR m_clrHighlightColor; // added LRESULT OnLButtonDown( // added with wizard UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled ) { ////////////////////////////////////////////////// added // exchange shadow and highlight so it looks // like it was pushed // OLE_COLOR clrHolder = m_clrHighlightColor; m_clrHighlightColor = m_clrShadowColor; m_clrShadowColor = clrHolder; Fire_OnClick(CComBSTR("Message from Control")); FireViewChange(); ////////////////////////////////////////////////// added return 0; } }; #endif //__XPANEL_H_