⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hazardmodel.h

📁 在VC环境下
💻 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 + -