AfxBeginThread()中第二个参数LPVOID pParam的使用...

my_bug 2004-10-28 10:07:40
我是一个VC初学者,想启动一个简单的线程,怎样把CString类型的数据成员传递到线程的回调函数中去,并能够在线程回调函数中使用这个CString类型中的数据?
我对AfxBeginThread()中第二个参数LPVOID pParam不会用。大家帮帮忙啊!
...全文
449 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
蒋晟 2004-10-29
  • 打赏
  • 举报
回复
char* pntemp=(char*)pParam
注意不要访问越界
my_bug 2004-10-29
  • 打赏
  • 举报
回复
多谢vcleaner,通过传递this指针解决问题!
老夏Max 2004-10-29
  • 打赏
  • 举报
回复
不能传递临时变量!改为成员变量以后尝试一下!
my_bug 2004-10-29
  • 打赏
  • 举报
回复
蒋晟兄:
这样不行啊,地址能够传过来,不过其中的内容不行!
fastxyf 2004-10-28
  • 打赏
  • 举报
回复
LPVOID pParam就是你要传的指针,可以是任何指针,用来传参数。如果是多个参数,可以用结构,传结构对象的地址就行了,到线程里再还原
老夏Max 2004-10-28
  • 打赏
  • 举报
回复
你的问题可以直接将调用线程的框架的this指针传递进去,然后使用this->CString变量;
如下作为参考:
unsigned __stdcall CPage3::LoadThumbNail(LPVOID lpParam)//传递this指针
{
CPage3* pThumbDlg = (CPage3*)lpParam;

CListCtrl& ListCtrl = pThumbDlg->m_cThumbList;
CImageList* pImgList = &pThumbDlg->m_ImageListThumb;
}
老夏Max 2004-10-28
  • 打赏
  • 举报
回复
可以传递任何简单的数据类型,呵呵,注意还原!this指针等等是最常传递的!
oyljerry 2004-10-28
  • 打赏
  • 举报
回复
把CString类型的数据成员对象指针作为参数传递进去
my_bug 2004-10-28
  • 打赏
  • 举报
回复
我的程序如下:

void CBFVoiceView::NumberSound(const char* nSoundNo)
{
char m_ntemp[16];
strcpy(m_ntemp, nSoundNo);

AfxBeginThread((AFX_THREADPROC)sound, (LPVOID)&m_ntemp, THREAD_PRIORITY_NORMAL,0,0,NULL);
}

UINT CBFVoiceView::sound(LPVOID pParam)
{
在此处该如何得到NumberSound接口函数中的m_ntemp中的内容?
。。。。。。
}

15,471

社区成员

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

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