GME
13
|
00001 #ifndef COMMONCOMPONENT_H 00002 #define COMMONCOMPONENT_H 00003 00004 #include "CommonError.h" 00005 #include "Comdef.h" 00006 00007 inline HRESULT CreateMgaComponent(CComPtr<IMgaComponent> &comp, LPCOLESTR ProgID) 00008 { 00009 00010 comp = NULL; 00011 00012 CComPtr<IUnknown> unk; 00013 HRESULT hr = unk.CoCreateInstance(ProgID); 00014 if (SUCCEEDED(hr)) { 00015 hr = unk.QueryInterface(&comp); 00016 if (FAILED(hr)) { 00017 SetStandardOrGMEErrorInfo(hr); 00018 CComPtr<IDispatch> disp; 00019 hr = unk.QueryInterface(&disp); 00020 if (SUCCEEDED(hr)) { 00021 hr = comp.CoCreateInstance(OLESTR("MgaUtil.ComponentProxy")); 00022 if (SUCCEEDED(hr)) { 00023 CComPtr<IMgaComponentProxy> proxy; 00024 hr = comp.QueryInterface(&proxy); 00025 if (SUCCEEDED(hr)) { 00026 hr = proxy->put_DispatchComponent(disp); 00027 } 00028 } 00029 } 00030 } 00031 } else { 00032 _bstr_t error; 00033 GetErrorInfo(hr, error.GetAddress()); 00034 if (static_cast<LPOLESTR>(error)) 00035 { 00036 SetErrorInfo(static_cast<LPOLESTR>(error + L": '" + ProgID + L"'")); 00037 } 00038 } 00039 return hr; 00040 } 00041 00042 inline HRESULT CreateMgaComponent(CComPtr<IMgaComponent> &comp, REFCLSID classID) 00043 { 00044 00045 comp = NULL; 00046 00047 CComPtr<IUnknown> unk; 00048 HRESULT hr = unk.CoCreateInstance(classID); 00049 if (SUCCEEDED(hr)) { 00050 hr = unk.QueryInterface(&comp); 00051 if (FAILED(hr)) { 00052 CComPtr<IDispatch> disp; 00053 hr = unk.QueryInterface(&disp); 00054 if (SUCCEEDED(hr)) { 00055 hr = comp.CoCreateInstance(OLESTR("MgaUtil.ComponentProxy")); 00056 if (SUCCEEDED(hr)) { 00057 CComPtr<IMgaComponentProxy> proxy; 00058 hr = comp.QueryInterface(&proxy); 00059 if (SUCCEEDED(hr)) { 00060 hr = proxy->put_DispatchComponent(disp); 00061 } 00062 } 00063 } 00064 } 00065 } 00066 return hr; 00067 } 00068 00069 00070 #endif // COMMONCOMPONENT_H