//
class CuLight
{
// CuLight 一實體後預存的值
// 在解構時會將這個值寫回registey
int m_nDefaultValue;
LIGHT_INCVALUE m_pfIncValue;
LIGHT_DECVALUE m_pfDecValue;
LIGHT_GETVALUE m_pfGetValue;
LIGHT_SETVALUE m_pfSetValue;
LIGHT_GETMAXSTEP m_pfGetMaxStep;
CuDllManager m_LightDll;
public:
wstring strDllfile;
CuLight();
virtual ~CuLight();
void Init();
int OnGetValue(void);
void OnSetValue(int n);
void OnDecValue();
void OnIncValue();
void OnSave(){ m_nDefaultValue = OnGetValue(); }
int OnGetMaxStep(){ return m_pfGetMaxStep(); }
};
//
CuLight::CuLight()
{
}
CuLight::~CuLight()
{
OnSetValue(m_nDefaultValue);
}
void CuLight::Init()
{
CuFile f;
wstring strFile = f.GetModuleFileName(strDllfile.c_str());
Verify(m_LightDll.LoadLibrary(strFile.c_str()) != NULL, L"can't Load Light_dll.dll Error");
m_pfIncValue = (LIGHT_INCVALUE)m_LightDll.GetProcAddress(L"IncValue");
Assert(m_pfIncValue != NULL, L"can't Load LIGHT_INCVALUE");
m_pfDecValue = (LIGHT_DECVALUE)m_LightDll.GetProcAddress(L"DecValue");
Assert(m_pfDecValue != NULL, L"can't Load LIGHT_DECVALUE");
m_pfGetValue = (LIGHT_GETVALUE)m_LightDll.GetProcAddress(L"GetValue");
Assert(m_pfGetValue != NULL, L"can't Load LIGHT_GETVALUE");
m_pfSetValue = (LIGHT_SETVALUE)m_LightDll.GetProcAddress(L"SetValue");
Assert(m_pfSetValue != NULL, L"can't Load LIGHT_SETVALUE");
m_pfGetMaxStep = (LIGHT_GETMAXSTEP)m_LightDll.GetProcAddress(L"GetMaxStep");
Assert(m_pfGetMaxStep != NULL, L"can't Load LIGHT_GETMAXSTEP");
m_nDefaultValue = OnGetValue();
}
int CuLight::OnGetValue(void)
{
int value;
value = m_pfGetValue();
return value;
}
void CuLight::OnSetValue(int n)
{
m_pfSetValue(n);
}
void CuLight::OnDecValue()
{
m_pfDecValue();
int value;
value = m_pfGetValue();
}
void CuLight::OnIncValue()
{
m_pfIncValue();
int value;
value = m_pfGetValue();
}
CE沒有標準, 所以定個介面元件對不同的機器實作獨一的DLL檔! 在設定檔裡指定要載入那一份DLL!
2010年2月7日 星期日
CuLight
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言