GME
13
|
00001 00002 #ifndef MGA_MGAMETAATTRIBUTE_H 00003 #define MGA_MGAMETAATTRIBUTE_H 00004 00005 #ifndef MGA_MGAMETABASE_H 00006 #include "MgaMetaBase.h" 00007 #endif 00008 00009 // --------------------------- CMgaMetaAttribute 00010 00011 class ATL_NO_VTABLE CMgaMetaAttribute : 00012 public CComObjectRootEx<CComSingleThreadModel>, 00013 public CComCoClass<CMgaMetaAttribute, &__uuidof(MgaMetaAttribute)>, 00014 public IDispatchImpl<IMgaMetaAttribute, &__uuidof(IMgaMetaAttribute), &__uuidof(__MGAMetaLib)>, 00015 public CMgaMetaBase 00016 { 00017 public: 00018 IUnknown *GetUnknown() const { return (IMgaMetaAttribute*)this; } 00019 00020 DECLARE_REGISTRY_RESOURCEID(IDR_MGAMETAATTRIBUTE) 00021 DECLARE_ONLY_AGGREGATABLE(CMgaMetaAttribute) 00022 00023 BEGIN_COM_MAP(CMgaMetaAttribute) 00024 COM_INTERFACE_ENTRY(IMgaMetaAttribute) 00025 COM_INTERFACE_ENTRY2(IMgaMetaBase, CMgaMetaBase) 00026 COM_INTERFACE_ENTRY2(IDispatch, IMgaMetaAttribute) 00027 END_COM_MAP() 00028 00029 DECLARE_MGAMETABASE(); 00030 00031 public: 00032 STDMETHOD(get_DefinedIn)(IMgaMetaBase **p) 00033 { return ComGetPointerValue(GetUnknown(), ATTRID_DEFATTR_PTR, p); } 00034 00035 STDMETHOD(get_UsedIn)(IMgaMetaFCOs **p); 00036 00037 STDMETHOD(get_ValueType)(attval_enum *p); 00038 STDMETHOD(get_DefaultValue)(VARIANT *p); 00039 STDMETHOD(get_Viewable)(VARIANT_BOOL *p); 00040 00041 STDMETHOD(get_EnumItems)(IMgaMetaEnumItems **p) 00042 { return ComGetSortedCollValue<IMgaMetaEnumItem>(GetUnknown(), ATTRID_ENUMITEMS_COLL, p); } 00043 00044 // ------- Edit 00045 00046 public: 00047 STDMETHOD(put_ValueType)(attval_enum p) 00048 { return ComPutAttrValue(GetUnknown(), ATTRID_ATTVALTYPE, static_cast<long>(p)); } 00049 00050 STDMETHOD(put_DefaultValue)(BSTR p) 00051 { return ComPutAttrValue(GetUnknown(), ATTRID_VALUE, p); } 00052 00053 STDMETHOD(put_Viewable)(VARIANT_BOOL p) 00054 { return ComPutAttrValue(GetUnknown(), ATTRID_VIEWABLE, (p == VARIANT_FALSE)?0L:1L); } 00055 00056 STDMETHOD(CreateEnumItem)(IMgaMetaEnumItem **p) 00057 { return ComCreateMetaObj(GetUnknown(), METAID_METAENUMITEM, ATTRID_ENUMITEMS_COLL, p); } 00058 00059 // ------- Traverse 00060 00061 public: 00062 static void Traverse(CMgaMetaProject *metaproject, CCoreObjectPtr &me); 00063 00064 }; 00065 00066 #endif//MGA_MGAMETAATTRIBUTE_H