📄 hazardmodel.h
字号:
// HazardModel.h : Declaration of the CHazardModel
#pragma once
#include "resource.h" // main symbols
#include "GeoHazardModel.h"
#include <vector>
// CHazardModel
template <class T, const IID* piid = &__uuidof(T), const GUID* plibid = &CAtlModule::m_libid, WORD wMajor = 1,
WORD wMinor = 0>
class ATL_NO_VTABLE CHazardModel :
public IDispatchImpl<T, piid, plibid, wMajor, 0>
{
public:
CHazardModel(UINT bitmapID=NULL,
UINT nameID=NULL,
UINT descriptionID=NULL,
UINT helpfile=NULL
)
{
if (bitmapID)
m_hBitmap = (HBITMAP) ::LoadImage(_AtlBaseModule.GetResourceInstance(), MAKEINTRESOURCE(bitmapID),
IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE);
if(nameID)
m_bstrName.LoadString(nameID);
if(descriptionID)
m_bstrDescription.LoadString(descriptionID);
if(helpfile)
m_bstrHelpFile.LoadString(helpfile);
}
virtual ~CHazardModel()
{
if (m_hBitmap)
DeleteObject(m_hBitmap);
m_hBitmap=0;
}
public:
STDMETHOD(get_Name)(BSTR* pVal)
{
return m_bstrName.CopyTo(pVal);
}
STDMETHOD(get_Description)(BSTR* pVal)
{
return m_bstrDescription.CopyTo(pVal);
}
STDMETHOD(get_HelpFile)(BSTR* pVal)
{
return m_bstrHelpFile.CopyTo(pVal);
}
STDMETHOD(get_Bitmap)(OLE_HANDLE* pVal)
{
if (pVal==NULL)
return E_POINTER;
* pVal=(OLE_HANDLE) m_hBitmap;
return S_OK;
}
STDMETHOD(get_IndexSystem)(IGHIndexs** pVal)
{
if (pVal==NULL)
return E_POINTER;
return m_cpGHIndexs.CopyTo(pVal);
}
STDMETHOD(put_IndexSystem)(IGHIndexs* newVal)
{
m_cpGHIndexs=newVal;
return S_OK;
}
STDMETHOD(get_Swatch)(IGHSwatch** pVal)
{
return m_cpGHSwatch.CopyTo(pVal);
}
STDMETHOD(put_Swatch)(IGHSwatch* newVal)
{
m_cpGHSwatch=newVal;
return S_OK;
}
STDMETHOD(Run)(SAFEARRAY **inputValue, FLOAT* pVal)
{
if(inputValue==NULL)
return E_POINTER;
return S_OK;
}
STDMETHOD(get_Parameter)(SAFEARRAY** pVal)
{
if (pVal==NULL)
return E_POINTER;
m_vecParameter.erase(m_vecParameter.begin(),m_vecParameter.end());
LONG lBound,uBound;
HRESULT hr;
hr=SafeArrayGetLBound(*pVal,1,&lBound);
hr=SafeArrayGetUBound(*pVal,1,&uBound);
ATLASSERT(SUCCEEDED(hr));
FLOAT *fValue=0;
hr=SafeArrayAccessData(*pVal,(void**)&fValue);
ATLASSERT(SUCCEEDED(hr));
for (LONG i=0; i<uBound-lBound+1; i++)
m_vecParameter.push_back(fValue[i]);
hr=SafeArrayUnaccessData(*pVal);
return S_OK;
}
STDMETHOD(put_Parameter)(SAFEARRAY** newVal)
{
if(newVal==NULL)
return E_POINTER;
HRESULT hr;
ULONG size=(ULONG)m_vecParameter.size();
*newVal=SafeArrayCreateVector(VT_R4,0,size);
if (*newVal==NULL)
return E_UNEXPECTED;
FLOAT *fValue=0;
hr=SafeArrayAccessData(*newVal,(void**)&fValue);
ATLASSERT(SUCCEEDED(hr));
for(ULONG i=0;i<size;i++)
fValue[i]=m_vecParameter[i];
hr=SafeArrayUnaccessData(*newVal);
ATLASSERT(SUCCEEDED(hr));
return S_OK;
}
protected:
CComBSTR m_bstrName;
CComBSTR m_bstrDescription;
CComBSTR m_bstrHelpFile;
HBITMAP m_hBitmap;
CComPtr<IGHIndexs> m_cpGHIndexs;
CComPtr<IGHSwatch> m_cpGHSwatch;
std::vector<FLOAT> m_vecParameter;
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -