高分求教MFC线程问题,急!

frogdan 2002-08-27 10:53:03
我用 AfxBeginThread 创建线程,但在编译时总是出现这样的error:
C2665: 'AfxBeginThread' : none of the 2 overloads can convert parameter 1 from type 'unsigned int (void *)'
请教大家这是怎么回事,我已经是按照书上的例子做了,是不是在编译选项里有不对的地方?
...全文
24 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
nbgyf 2002-08-27
  • 打赏
  • 举报
回复
提问的兄弟们,你们为什么就不去看一看MSDN呢?
frogdan 2002-08-27
  • 打赏
  • 举报
回复
感谢各位的帮忙,由于小弟给分上限是100,所以请多包涵!^_^
No9 2002-08-27
  • 打赏
  • 举报
回复
看问题应该是一个工作线程的程序;所以使用的原型为:
AfxBeginThread(MyControllingFunction,pParam);
你看看代码写的对不对?
zhangxin123 2002-08-27
  • 打赏
  • 举报
回复
1 建立线程类 CMyThread
2.添加一个对话框指针对象,
3。添加一个函数SetParentWnd(CWnd *pWnd);或其它
4.在你的函数中就可用对话框指针处理了
。。。。


CMyThread *m_MediaPlayer;
m_MediaPlayer=new CMediaPlayer;
m_DlgMedia=new CDlgMediaPlay;
m_DlgMedia->Create(IDD_DLGMEDIAPLAY);
m_MediaPlayer->AddFile(FileName);
m_DlgMedia->ShowWindow(SW_SHOW);
m_MediaPlayer->SetParentWnd(m_DlgMedia->m_hWnd);
m_MediaPlayer->CreateThread();
m_MediaPlayer->Play();
opentuxedo 2002-08-27
  • 打赏
  • 举报
回复
把线程函数定义成static或CYourDialog的友员,把CYourDialog*传给线程函数
llm06 2002-08-27
  • 打赏
  • 举报
回复
用用户界面线程
从cthread继承一下,把你的dialog在initinstance中显示就可以了
glhorse 2002-08-27
  • 打赏
  • 举报
回复
UINT MyProc(LPVOID pPara)
{
CDialog* pDlg = (CDialog*)pPara;
....
CEdit* edit = pDlg->GetD.....();

//do something
}

CWinThread * hThread=AfxBeginThread(MyProc,(LPVIOD)this);
Mr_Ldh 2002-08-27
  • 打赏
  • 举报
回复
UI线程?
snsins 2002-08-27
  • 打赏
  • 举报
回复
你要在线程里用到DIALOG的控件
把线程函数定义位静态的DIALOG类成员函数

这样就可以操作控件了

也可以把类指针作为参数传递给线程函数
frogdan 2002-08-27
  • 打赏
  • 举报
回复
我的问题是怎样在线程函数里调用Dialog的控件?
yhb4 2002-08-27
  • 打赏
  • 举报
回复
跟线程的参数有关,应该是指针穿错了
zeroweb 2002-08-27
  • 打赏
  • 举报
回复
小熊说得对,你到底创建什么样的线程?
看一下MSDN,上面讲得很详细。
frogdan 2002-08-27
  • 打赏
  • 举报
回复
刚才的问题已经解决,我原来是在一个Dialog里面定义了一个成员函数,作为线程的运行函数,这样是不行的。但我要在线程里用到Dialog的控件,该如何处理呢?我的具体意图是:单击Start Button,线程开始,在Edit里不断显示数据,单击Stop Button,线程结束。
snsins 2002-08-27
  • 打赏
  • 举报
回复
UINT MyProc(LPVOID pPara)
{
//do something
}

CWinThread * hThread=AfxBeginThread(MyProc,NULL);

hThread->SuspendThread();
hThread->ResumeThread();
every 2002-08-27
  • 打赏
  • 举报
回复
如果是1
m_Thread = AfxBeginThread(MyControllingFunction, this))
qigefei 2002-08-27
  • 打赏
  • 举报
回复
把程序贴出来,是不是参数错了.
scxy 2002-08-27
  • 打赏
  • 举报
回复
你定义的是这样的一个函数UINT MyControllingFunction( LPVOID pParam )还是CWinThread的一个实例CWinThread MyThread;
如果是1
AfxBeginThread(MyControllingFunction)
如果是2
AfxBeginThread(&MyThread)

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧