2009年12月21日 星期一

CuEventObject - Creates or opens a named or unnamed event object.

// Creates or opens a named or unnamed event object.




// CuEventObject.h


class CuEventObject
{
    HANDLE m_hHandle;

public:
    DWORD WaitForSingleObject(DWORD dwMilliseconds = INFINITE);

    BOOL SetEvent();
    BOOL ResetEvent();
    BOOL CreateEvent(TCHAR *szName, BOOL bManualReset = FALSE, BOOL bInitialState = FALSE);
    BOOL CloseHandle();
    operator HANDLE() const;

    CuEventObject();
    CuEventObject(TCHAR *szName);

    // 自動呼叫 CloseHandle();
    virtual ~CuEventObject();
};



// CuEventObject.cpp

CuEventObject::CuEventObject(TCHAR *szName)
:m_hHandle(NULL)
{
    CreateEvent(szName);
}

CuEventObject::CuEventObject()
:m_hHandle(NULL)
{

}

CuEventObject::~CuEventObject()
{
    CloseHandle();
}

CuEventObject::operator HANDLE() const
{
    return m_hHandle;
}

BOOL CuEventObject::CloseHandle()
{
    BOOL bResult = TRUE;
    if(m_hHandle)
        bResult = ::CloseHandle(m_hHandle);
    m_hHandle = NULL;

    return bResult;
}

BOOL CuEventObject::CreateEvent(TCHAR *szName, BOOL bManualReset /*= FALSE*/, BOOL bInitialState /*= FALSE*/)
{

    CloseHandle();
    m_hHandle = ::CreateEvent(NULL, bManualReset, bInitialState, szName);
    return (m_hHandle == NULL);

}
BOOL CuEventObject::ResetEvent()
{
    return ::ResetEvent(m_hHandle);
}

BOOL CuEventObject::SetEvent()
{
    return  ::SetEvent(m_hHandle);
}

DWORD CuEventObject::WaitForSingleObject(DWORD dwMilliseconds /*  = INFINITE */)
{
    return  ::WaitForSingleObject(m_hHandle, dwMilliseconds);
}

沒有留言:

張貼留言