// DeviceIcon.h : Declaration of the CDeviceIcon #ifndef __DEVICEICON_H_ #define __DEVICEICON_H_ #include "resource.h" // main symbols #include ///////////////////////////////////////////////////////////////////////////// // CDeviceIcon class ATL_NO_VTABLE CDeviceIcon : public CComObjectRootEx, public IDispatchImpl, public CComControl, public IPersistStreamInitImpl, public IOleControlImpl, public IOleObjectImpl, public IOleInPlaceActiveObjectImpl, public IViewObjectExImpl, public IOleInPlaceObjectWindowlessImpl, public IPersistStorageImpl, public ISpecifyPropertyPagesImpl, public IQuickActivateImpl, public IDataObjectImpl, public IProvideClassInfo2Impl<&CLSID_DeviceIcon, NULL, &LIBID_DEVCON2Lib>, public CComCoClass { protected: HICON m_hIcon; HBITMAP m_hSmallImage; HBITMAP m_hSmallMask; INT m_MiniIcon; public: CDeviceIcon() { m_hIcon = NULL; m_MiniIcon = 0; m_hSmallImage = NULL; m_hSmallMask = NULL; } ~CDeviceIcon() { ResetIcon(); } DECLARE_REGISTRY_RESOURCEID(IDR_DEVICEICON) DECLARE_PROTECT_FINAL_CONSTRUCT() BEGIN_COM_MAP(CDeviceIcon) COM_INTERFACE_ENTRY(IDeviceIcon) COM_INTERFACE_ENTRY(IDispatch) 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(ISpecifyPropertyPages) COM_INTERFACE_ENTRY(IQuickActivate) COM_INTERFACE_ENTRY(IPersistStorage) COM_INTERFACE_ENTRY(IDataObject) COM_INTERFACE_ENTRY(IProvideClassInfo) COM_INTERFACE_ENTRY(IProvideClassInfo2) END_COM_MAP() public: BEGIN_PROP_MAP(CDeviceIcon) PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4) PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4) // Example entries // PROP_ENTRY("Property Description", dispid, clsid) // PROP_PAGE(CLSID_StockColorPage) END_PROP_MAP() BEGIN_MSG_MAP(CDeviceIcon) CHAIN_MSG_MAP(CComControl) DEFAULT_REFLECTION_HANDLER() END_MSG_MAP() // Handler prototypes: // LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); // LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); // LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled); HRESULT OnDraw(ATL_DRAWINFO& di); // IViewObjectEx DECLARE_VIEW_STATUS(0) // IDeviceIcon public: BOOL DrawMiniIcon(HDC hDC,RECT & rect,INT icon); STDMETHOD(ObtainIcon)(/*[in]*/ LPDISPATCH pSource); void ResetIcon(); }; #endif //__DEVICEICON_H_