工作线程调用类的成员函数,总是出现大红叉的那个提示,为什么?代码如下://控制函数,定义线程
static UINT Thread_FatigueAlarm(LPVOID pParam)
{
CUsepicoptdllView* p_usepicoptdllview = (CUsepicoptdllView*)pParam;
if((p_usepicoptdllview == NULL) || (!p_usepicoptdllview- >IsKindOf(RUNTIME_CLASS(CUsepicoptdllView))))
{
AfxMessageBox("参数传入失败,退出线程");
return 1;
}p_usepicoptdllview->OnPicBinary();
/*int globalCounter;
globalCounter++;
if(globalCounter > 9999)
globalCounter = 0;
*/
Sleep(1000);
return UINT(0);
}void CUsepicoptdllView::OnFatigueAlarmRun()
{
CUsepicoptdllView *pObject = new CUsepicoptdllView(); //创建对象
m_pThread = new CWinThread(); //创建线程
m_pThread->m_bAutoDelete = false;
m_pThread = AfxBeginThread(Thread_FatigueAlarm,pObject); //创建工作者线程
if(m_pThread != NULL)
MessageBox("线程调用成功");
}主要是一调用p_usepicoptdllview->OnPicBinary();这个函数就出错,程序没有走到OnPicBinary()函数里面。thread线程图像处理
static UINT Thread_FatigueAlarm(LPVOID pParam)
{
CUsepicoptdllView* p_usepicoptdllview = (CUsepicoptdllView*)pParam;
if((p_usepicoptdllview == NULL) || (!p_usepicoptdllview- >IsKindOf(RUNTIME_CLASS(CUsepicoptdllView))))
{
AfxMessageBox("参数传入失败,退出线程");
return 1;
}p_usepicoptdllview->OnPicBinary();
/*int globalCounter;
globalCounter++;
if(globalCounter > 9999)
globalCounter = 0;
*/
Sleep(1000);
return UINT(0);
}void CUsepicoptdllView::OnFatigueAlarmRun()
{
CUsepicoptdllView *pObject = new CUsepicoptdllView(); //创建对象
m_pThread = new CWinThread(); //创建线程
m_pThread->m_bAutoDelete = false;
m_pThread = AfxBeginThread(Thread_FatigueAlarm,pObject); //创建工作者线程
if(m_pThread != NULL)
MessageBox("线程调用成功");
}主要是一调用p_usepicoptdllview->OnPicBinary();这个函数就出错,程序没有走到OnPicBinary()函数里面。thread线程图像处理
->
p_usepicoptdllview->PostMessage(WM_PIC);CUsepicoptdllView里响应这个自定义消息
LRESULT CUsepicoptdllView::OnPic(WPARAM wparam,LPAEAM lparam)
{
OnPicBinary();
}
SendMessage也可以
//控制函数
static UINT Thread_FatigueAlarm(LPVOID pParam)
{
CUsepicoptdllView* p_usepicoptdllview = (CUsepicoptdllView*)pParam;
if((p_usepicoptdllview == NULL) || (!p_usepicoptdllview->IsKindOf(RUNTIME_CLASS(CUsepicoptdllView))))
{
AfxMessageBox("参数传入失败,准备退出线程");
return 1;
}
//if(p_usepicoptdllview->InitInstance())
// p_usepicoptdllview->OnPicBinary();
p_usepicoptdllview->PostMessage(WM_PIC);
/*int globalCounter;
globalCounter++;
if(globalCounter > 9999)
globalCounter = 0;
*/
Sleep(1000);
return UINT(0);
}
//运行
void CUsepicoptdllView::OnFatigueAlarmRun()
{
CUsepicoptdllView *pObject = new CUsepicoptdllView(); //创建对象
m_pThread = new CWinThread(); //创建线程
//m_pThread->CreateThread();
m_pThread->m_bAutoDelete = false;
m_pThread = AfxBeginThread(Thread_FatigueAlarm,pObject); //启动线程
if(m_pThread != NULL)
MessageBox("启动线程成功");
else{
AfxMessageBox("创建发送线程失败");
}
}
//停止
void CUsepicoptdllView::OnFatigueAlarmEnd()
{
return;
}
//消息响应函数
LRESULT CUsepicoptdllView::OnPic(WPARAM wparam,LPARAM lparam)
{
OnPicBinary();
return LRESULT(TRUE);
}
void CUsepicoptdllView::OnFatigueAlarmRun()
{
m_pThread = new CWinThread(); //创建线程
//m_pThread->CreateThread();
m_pThread->m_bAutoDelete = false;
m_pThread = AfxBeginThread(Thread_FatigueAlarm,this); //启动线程
if(m_pThread != NULL)
MessageBox("启动线程成功");
else{
AfxMessageBox("创建发送线程失败");
}
}