继承cevent或者自己写个类包含一个cevent都可以
继承我目前写不来 ,包含一个cevent遇到一个问题 因为CEvent是申明的时候就要确定 人工控制\初始时信号状态\事件名字 而我希望在类里面InitEvent初始化
,这个怎么做 请求高人指点
class myevent
{
   int InitEvent( BOOL bInitiallyOwn = FALSE, BOOL bManualReset = FALSE, LPCTSTR lpszName = NULL);
private:
    CEvent m_event;
};mfc的CEvent构造函数
CEvent( BOOL bInitiallyOwn = FALSE, BOOL bManualReset = FALSE, LPCTSTR lpszName = NULL, LPSECURITY_ATTRIBUTES lpsaAttribute = NULL );

解决方案 »

  1.   

    class myevent
    {
    int InitEvent( BOOL bInitiallyOwn = FALSE, BOOL bManualReset = FALSE, LPCTSTR lpszName = NULL);private:
    HANDLE m_hHandle;
    };要重写就彻底一点。放开手脚。
      

  2.   

    那么 在InitEvent函数里 我不是要用api写这个event了么  有没有不用api的方法
    比如我继承下CEvent
    class myevent:CEvent
      

  3.   

    搞不懂为什么不用api写。
    使用api简单清晰。
    而且关于 event 的函数就那么几个。如果你想继承CEvent,那就不如直接使用CEvent.
      

  4.   

    这个应该是你要的吧:#ifndef _CEVENT_SYNCHRONIZATION_H_
    #define _CEVENT_SYNCHRONIZATION_H_#include <cassert>class CEventSync  
    {
    public: CEventSync(HANDLE *pHandle)
    {
       assert(pHandle);
           m_pHandle=pHandle;
           DWORD dwRet=WaitForSingleObject(*m_pHandle,INFINITE);
           ResetEvent(*m_pHandle);
           assert(dwRet==WAIT_OBJECT_0);
    ........................................... } virtual ~CEventSync()
    {
       SetEvent(*m_pHandle);
    }
    private:
        HANDLE * m_pHandle;  
    };#endifHANDLE hEvent=::CreateEvent(NULL,TRUE,TRUE,"");..........
    ..........CEventSync Sync(&hEvent);//事件同步..........