#ifndef __AGCEventIDRange_h__ #define __AGCEventIDRange_h__ ///////////////////////////////////////////////////////////////////////////// // AGCEventIDRange.h : Declaration of the CAGCEventIDRange class. // #include #include "resource.h" #include "IAGCRangeImpl.h" #include "AGCEventDef.h" ///////////////////////////////////////////////////////////////////////////// // CAGCEventIDRange class ATL_NO_VTABLE CAGCEventIDRange : public IAGCRangeImpl, public AGCObjectSafetyImpl, public CComObjectRootEx, public CComCoClass { // Declarations public: DECLARE_REGISTRY_RESOURCEID(IDR_AGCEventIDRange) DECLARE_PROTECT_FINAL_CONSTRUCT() DECLARE_GET_CONTROLLING_UNKNOWN() // Interface Map public: BEGIN_COM_MAP(CAGCEventIDRange) COM_INTERFACE_ENTRY(IAGCEventIDRange) COM_INTERFACE_ENTRIES_IAGCRangeImpl() COM_INTERFACE_ENTRY(IObjectSafety) END_COM_MAP() // Category Map public: BEGIN_CATEGORY_MAP(CAGCEventIDRange) IMPLEMENTED_CATEGORY(CATID_AGC) IMPLEMENTED_CATEGORY(CATID_SafeForScripting) IMPLEMENTED_CATEGORY(CATID_SafeForInitializing) END_CATEGORY_MAP() // Overrides public: AGCEventID GetVariantValue(VARIANT* pvar) { assert(VT_I4 == V_VT(pvar)); return static_cast(V_I4(pvar)); } void GetPrefixString(LPOLESTR pszPrefix) { wcscpy(pszPrefix, L"["); } void GetSuffixString(LPOLESTR pszSuffix) { wcscpy(pszSuffix, L")"); } void GetValueDelimiter(LPOLESTR pszDelim) { wcscpy(pszDelim, L","); } void FormatValueString(const AGCEventID& value, LPOLESTR pszOut) { const CAGCEventDef::XEventDef* it = CAGCEventDef::find(value); if (it != CAGCEventDef::end()) swprintf(pszOut, L"%ls", it->m_pszName); else swprintf(pszOut, L"%d", value); } bool ReadValueString(LPCOLESTR pszValue, AGCEventID& value) { if (CAGCEventDef::IDFromName(pszValue, value)) return true; return 1 == swscanf(pszValue, L"%d", &value); } }; ///////////////////////////////////////////////////////////////////////////// #endif //__AGCEventIDRange_h__