📄 sysevent.h
字号:
#if !defined(SysEvent_H)
#define SysEvent_H
#include <string>
using namespace std;
////////////////////////////////////////////////////////////////////////
// SysEvent
//##ModelId=424BB641022A
class SysEvent
{
//##ModelId=424BB641022C
string m_name; // name of event
//##ModelId=424BB641023C
HANDLE m_hEvent; // handle to user event
//##ModelId=424BB6410249
bool m_attached; // shows if just attached to event
public:
//##ModelId=424BB641024A
SysEvent () :
m_name (),
m_hEvent (NULL),
m_attached(false)
{}
//##ModelId=424BB6410259
SysEvent ( SysEvent & event ) :
m_name (),
m_hEvent (NULL),
m_attached(false)
{ *this = event; }
//##ModelId=424BB641025B
virtual ~SysEvent ()
{ release(); }
// create/release
//##ModelId=424BB641025D
bool create ()
{
// release if needed
release();
// init name
m_name = "";
// create event
m_attached = false;
m_hEvent = ::CreateEvent( NULL, TRUE, FALSE, NULL );
if ( m_hEvent == NULL )
return false;
else
return true;
}
//##ModelId=424BB6410269
bool create ( LPTSTR name )
{
if ( !name )
return false;
// release if needed
release();
// create named event
m_attached = false;
m_hEvent = ::CreateEvent( NULL, TRUE, FALSE, (LPCTSTR) name );
if ( m_hEvent == NULL )
return false;
else
return true;
}
//##ModelId=424BB641026B
void release ()
{
// if only attached just detach
// else destroy event and name
if ( m_attached )
detach();
else
{
if ( m_hEvent )
{
::CloseHandle(m_hEvent);
m_hEvent = NULL;
}
if ( !m_name.empty() )
m_name.erase();
}
}
// attach/detach from event
//##ModelId=424BB641026C
bool attached ()
{ return m_attached; }
//##ModelId=424BB6410278
bool attach ( HANDLE hEvent )
{
if ( !hEvent )
return false;
// get handle show attached
m_hEvent = hEvent;
m_attached = true;
return true;
}
//##ModelId=424BB641027A
void detach ()
{
// if not attached stop
if ( !m_attached )
return;
m_hEvent = NULL;
if ( !m_name.empty() )
m_name.erase();
m_attached = false;
}
// set/reset event
//##ModelId=424BB641027B
void set ()
{
::SetEvent( m_hEvent );
}
//##ModelId=424BB6410288
void reset ()
{
::ResetEvent( m_hEvent );
}
// get event handle
//##ModelId=424BB6410289
HANDLE getEvent ()
{ return m_hEvent; }
// ref operators
//##ModelId=424BB641028A
HANDLE operator & ()
{ return m_hEvent; }
//##ModelId=424BB641028B
operator HANDLE ()
{
return m_hEvent;
}
// sort operators
//##ModelId=424BB6410298
bool operator < ( SysEvent & event )
{
if ( m_hEvent < event.m_hEvent )
return true;
else
return false;
}
//##ModelId=424BB641029A
bool operator == ( SysEvent & event )
{
if ( m_hEvent == event.m_hEvent )
return true;
else
return false;
}
//##ModelId=424BB64102A7
bool operator = ( SysEvent & event )
{
m_name = event.m_name;
m_hEvent = event.m_hEvent;
m_attached = event.m_attached;
}
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -