|
|
// IconControl.h : Declaration of the CIconControl
#ifndef __ICONCONTROL_H_
#define __ICONCONTROL_H_
extern const CLSID CLSID_IconControl;
/////////////////////////////////////////////////////////////////////////////
// CIconControl
class ATL_NO_VTABLE CIconControl : public CComObjectRootEx<CComSingleThreadModel>, public CComControl<CIconControl>, public IPersistStreamInitImpl<CIconControl>, public IOleControlImpl<CIconControl>, public IOleObjectImpl<CIconControl>, public IOleInPlaceActiveObjectImpl<CIconControl>, public IViewObjectExImpl<CIconControl>, public IOleInPlaceObjectWindowlessImpl<CIconControl>, public IPersistStorageImpl<CIconControl>, public ISpecifyPropertyPagesImpl<CIconControl>, public IQuickActivateImpl<CIconControl>, public IDataObjectImpl<CIconControl>, public IPersistPropertyBagImpl<CIconControl>, public IObjectSafetyImpl<CIconControl, INTERFACESAFE_FOR_UNTRUSTED_DATA>, public CComCoClass<CIconControl, &CLSID_IconControl> { public: CIconControl() : m_fImageInfoValid(false), m_fAskedForImageInfo(false), m_hIcon(NULL), m_bDisplayNotch(true), m_fLayoutRTL(false) { }
virtual ~CIconControl() { if (m_hIcon) DestroyIcon(m_hIcon); }
DECLARE_MMC_CONTROL_REGISTRATION( g_szMmcndmgrDll, // implementing DLL
CLSID_IconControl, _T("MMC IconControl class"), _T("MMC.IconControl.1"), _T("MMC.IconControl"), LIBID_NODEMGRLib, _T("1"), _T("1.0"))
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CIconControl) 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(IPersistPropertyBag) 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(IObjectSafety) END_COM_MAP()
BEGIN_PROP_MAP(CIconControl) PROP_DATA_ENTRY("Notch", m_bDisplayNotch, VT_UI4) // the "Notch" is the quarter circle at the bottom-right of the panel
// 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(CIconControl) CHAIN_MSG_MAP(CComControl<CIconControl>) 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);
// IViewObjectEx
DECLARE_VIEW_STATUS(VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE)
public: HRESULT OnDraw(ATL_DRAWINFO& di);
// Helpers
private: SC ScConnectToAMCViewForImageInfo();
private: HICON m_hIcon; bool m_fImageInfoValid : 1; bool m_fAskedForImageInfo : 1; UINT m_bDisplayNotch; // the "Notch" is the quarter circle at the bottom-right of the panel
bool m_fLayoutRTL; }; #endif //__ICONCONTROL_H_
|