GME
13
|
00001 00002 #ifndef MGA_MGAMETAREGNODE_H 00003 #define MGA_MGAMETAREGNODE_H 00004 00005 // --------------------------- CMgaMetaRegNodes 00006 00007 class ATL_NO_VTABLE CMgaMetaRegNodes 00008 { 00009 public: 00010 static HRESULT get_RegistryNode(IUnknown *me, BSTR path, IMgaMetaRegNode **p); 00011 static HRESULT get_RegistryValue(IUnknown *me, BSTR path, BSTR *p); 00012 static HRESULT put_RegistryValue(IUnknown *me, BSTR path, BSTR p); 00013 }; 00014 00015 #define DECLARE_MGAMETAREGNODES() \ 00016 \ 00017 public: \ 00018 STDMETHOD(get_RegistryNodes)(IMgaMetaRegNodes **p) \ 00019 { return ComGetCollectionValue<IMgaMetaRegNode>(GetUnknown(), ATTRID_REGNODES_COLL, p); } \ 00020 \ 00021 STDMETHOD(get_RegistryNode)(BSTR path, IMgaMetaRegNode **p) \ 00022 { return CMgaMetaRegNodes::get_RegistryNode(GetUnknown(), path, p); } \ 00023 \ 00024 STDMETHOD(GetRegistryNodeDisp)(BSTR path, IMgaMetaRegNode **p) \ 00025 { return get_RegistryNode( path, p); } \ 00026 \ 00027 STDMETHOD(get_RegistryValue)(BSTR path, BSTR *p) \ 00028 { return CMgaMetaRegNodes::get_RegistryValue(GetUnknown(), path, p); } \ 00029 \ 00030 STDMETHOD(GetRegistryValueDisp)(BSTR path, BSTR *p) \ 00031 { return get_RegistryValue( path, p); } \ 00032 \ 00033 STDMETHOD(put_RegistryValue)(BSTR path, BSTR p) \ 00034 { return CMgaMetaRegNodes::put_RegistryValue(GetUnknown(), path, p); } \ 00035 \ 00036 STDMETHOD(SetRegistryValueDisp)(BSTR path, BSTR p) \ 00037 { return put_RegistryValue( path, p); } 00038 00039 00040 // --------------------------- CMgaMetaRegNode 00041 00042 class ATL_NO_VTABLE CMgaMetaRegNode : 00043 public CComCoClass<CMgaMetaRegNode, &__uuidof(MgaMetaRegNode)>, 00044 public CComObjectRootEx<CComSingleThreadModel>, 00045 public IDispatchImpl<IMgaMetaRegNode, &__uuidof(IMgaMetaRegNode), &__uuidof(__MGAMetaLib)>, 00046 public CMgaMetaRegNodes 00047 { 00048 public: 00049 IUnknown *GetUnknown() const { return (IMgaMetaRegNode*)this; } 00050 00051 DECLARE_REGISTRY_RESOURCEID(IDR_MGAMETAREGNODE) 00052 DECLARE_ONLY_AGGREGATABLE(CMgaMetaRegNode) 00053 00054 BEGIN_COM_MAP(CMgaMetaRegNode) 00055 COM_INTERFACE_ENTRY(IMgaMetaRegNode) 00056 COM_INTERFACE_ENTRY(IDispatch) 00057 END_COM_MAP() 00058 00059 DECLARE_MGAMETAREGNODES() 00060 00061 public: 00062 STDMETHOD(get_Name)(BSTR *p) 00063 { return ComGetAttrValue(GetUnknown(), ATTRID_NAME, p); } 00064 00065 STDMETHOD(get_Value)(BSTR *p) 00066 { return ComGetAttrValue(GetUnknown(), ATTRID_VALUE, p); } 00067 00068 STDMETHOD(put_Value)(BSTR p) 00069 { return ComPutAttrValue(GetUnknown(), ATTRID_VALUE, p); } 00070 00071 STDMETHOD(Delete)(); 00072 00073 // ------- Traverse 00074 00075 public: 00076 static void Traverse(CMgaMetaProject *metaproject, CCoreObjectPtr &me); 00077 }; 00078 00079 #endif//MGA_MGAMETAREGNODE_H