关于线程的问题,求教各位前辈!~~~

qianyong325 2003-09-16 04:53:42
我刚开始接触多线程开发,自己打算写一个最简单的练习一下这两天看书的成果,做了一个对话框程序,用户输入两个数字,点击按钮以后,启动两个线程,一个把这两个数字相加,一个把数字相减,在OnButton函数中启动线程
CWinThread *p=AfxBeginThread(add,0);
CWinThread *q=AfxBeginThread(sub,0);
编译提示错误C2665: 'AfxBeginThread' : none of the 2 overloads can convert parameter 1 from type 'unsigned int (unsigned int,unsigned int)'

这个错误是什么意思啊?
这是我的线程函数,
UINT CLianxi4Dlg::add(UINT m_Num1,UINT m_Num2)
{
m_Add=m_Num1+m_Num2;
return m_Add;
}
UINT CLianxi4Dlg::sub(UINT m_Num1,UINT m_Num2)
{
m_Sub=m_Num1-m_Num2;
return m_Sub;
}
我是很菜的菜鸟,刚开始学,各位前辈一定要救我,拉我一把啊!!谢谢大家了:)


...全文
91 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xfxia 2003-09-16
  • 打赏
  • 举报
回复
线程函数的定义必须为UINT MyThreadFunction( LPVOID pParam )的形式,该函数有且只有一个参数,并且该函数不能是类的成员函数。
对于你的问题可以用如下方法解决:
typedef stuct tagMyParamStruct
{
UINT m_nNum1;
UINT m_nNum2;
UINT m_nResult;
}MyParamStruct;

UINT add(MyParamStruct* p)
{
p->m_nResult = p->m_nNum1 + p->m_nNum2;
return p->m_nResult;
}

UINT sub(MyParamStruct* p)
{
p->m_nResult = p->m_nNum1 - p->m_nNum2;
return p->m_nResult;
}

MyParamStruct param;
param.m_nNum1 = ?;
param.m_nNum2 = ?;

CWinThread *p=AfxBeginThread(add,¶m);
CWinThread *q=AfxBeginThread(sub,¶m);

大致过程是这样的,其他的一些内容看看msdn吧
qianyong325 2003-09-16
  • 打赏
  • 举报
回复
怎么没人救我啊~~555555555555~~
大家救救我把,我也给分的,谢谢大家帮忙了阿~

15,471

社区成员

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

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