必须将对话框指针传入线程函数,其后有三种方式可以实现
方法一:中直接调用m_progress.SetPos(ProgressCount);
方法二:可以通过发送自定义消息,让对话框调用m_progress.SetPos(ProgressCount);
方法三:可以把具体实现放在类内部的成员函数(非静态)中,而在线程函数值用对话框指针调用这个函数,这样比较方便。
VC中推荐在work thread中不要操作界面,所以你最好重新构思你的程序
创建线程时将指针作为参数传入
AfxBeginThread(SendThread, this, NULL);
在线程函数中再强转使用
UINT CMainFrame::SendThread(LPVOID pParam)
{
CMainFrame *pThis = (CMainFrame*)pParam;
...
pThis->m_progress.SetPos(ProgressCount);
...
return 1;
}
magicpapacy 正解