【求助】关于CObject类
我现在在做一个从摄像头中去视频流的程序,其中每取一个视频流就要开一个线程,当要关闭这一视频流的时候,要用到::WaitForSingleObject(recordToStop,INFINITE);这一函数。其中的recordToStop是CEvent类的对象。但是我不知道有什么方法可以保存这个值,因为每次开一个线程后,都相当于新建一个CEvent对象。于是,作为C++菜鸟的我,就想到在map中保存当前正在取视频流的摄像头编号和recordToStop的对应关系。
不知道这个方法对不。如果不对,我应该用什么方法呢?请各位大神帮忙
还有一个问题就是,每次我想要停止去视频流的时候,就要把这个map的CEvent对象取出来,放入::WaitForSingleObject中,但是会报错:
error C2248: “CObject::operator =”: 无法访问 private 成员(在“CObject”类中声明)
部分程序如下:
1. AVIP类:
//AVIP.h 用于定义保存在map中的键的类型
#include <vfw.h>
#include "afxwin.h"
#include <afxmt.h>
class AVIP
{
public:
AVIP();
void setPfile(PAVIFILE ppfile);
void setPs(PAVISTREAM pps);
//void setRecord(CEvent &pRecordOn);
PAVIFILE getPfile();
PAVISTREAM getPs();
//CEvent getRecord();
CEvent RecordOn;
private:
PAVIFILE pfileOn;
PAVISTREAM psOn;
//CEvent RecordOn;
};
//Video.cpp:用于管理视频流的开启与结束
//.....
//打开视频浏览后
//Record_Complete是在Video.h中定义的CEvent对象
Record_Complete.SetEvent();
AVIP avip;
avip.setPfile(pfile);
avip.setPs(ps);
avip.RecordOn = &Record_Complete;
aviMap[camAVI] = avip;
//........
//关闭视频流
map<int,AVIP>::iterator it;
PAVIFILE pfileToStop = NULL;
PAVISTREAM psToStop = NULL;
CEvent recordToStop = NULL;
for(it=aviMap.begin();it!=aviMap.end();++it){
if(nCamToStop == it->first){
pfileToStop = it->second.getPfile();
psToStop = it->second.getPs();
recordToStop = &(it->second.RecordOn);
aviMap.erase(it);
::WaitForSingleObject(recordToStop,INFINITE);
}
}