菜鸟 CWinThread 线程类求助
定义了这么一个线程
class CPreview : public CWinThread
{
DECLARE_DYNCREATE(CPreview)
private:
CRITICAL_SECTION m_cs;
EdsBaseRef FCamera ;
bool FMirror,FYMirror,FRotate;
bool bStop ;
void DownLoadEvfData();
protected:
CPreview();
CPreview(EdsBaseRef camera,bool CreateSuspended,bool bMirror,bool bRotate);
virtual ~CPreview();
public:
virtual BOOL InitInstance();
virtual int ExitInstance();
virtual int Run();
__declspec(property(get=GetMirror,put=SetMirror)) bool Mirror;
__declspec(property(get=GetYMirror,put=SetYMirror)) bool YMirror;
__declspec(property(get=GetRotate,put=SetRotate)) bool Rotate90;
protected:
afx_msg void OnStopView(WPARAM wParam,LPARAM lParam);
bool GetMirror()
{
return FMirror;
}
void SetMirror(bool bmirror)
{
FMirror = bmirror;
}
bool GetRotate()
{
return FRotate;
}
void SetRotate(bool brotate)
{
FRotate = brotate;
}
bool GetYMirror()
{
return FYMirror;
}
void SetYMirror(bool bymirror)
{
FYMirror = bymirror;
}
DECLARE_MESSAGE_MAP()
};
这个线程在其它类中定义了一个实例
CWinThread *preview;
是这么创建线程的
preview = AfxBeginThread(RUNTIME_CLASS(CPreview),0,0,CREATE_SUSPENDED,0);
preview->m_bAutoDelete = true;
1.我想让它创建时挂起,但发现如果挂起了,再preview->ResumeThread(),无法唤醒
2.在线程类中,定义了一些变量,需要外界传递进来,使用上述方式创建时,它执行的是该构造函数CPreview();而不是这个,CPreview(EdsBaseRef camera,bool CreateSuspended,bool bMirror,bool bRotate);如果我想传递初始化参数,该如何处理
3.该线程需要长时间后台处理,下载图像数据,再用回调的形式将数据传递到主界面上,是否可重写RUN().如果可以,该怎么写,直接写个while(tru)么,看MSDN上说,最好不要重写
万分感谢!!!!
分享到:
------解决方案--------------------
我都是直接调用API的,MFC的东西一点都不懂,来帮顶一下
------解决方案--------------------
“线程可以自己挂起但不能自己恢复”