2010年2月7日 星期日

CuLight

//


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!

沒有留言:

張貼留言