请问如何从主进程向独立的工作者线程函数传递指针?

smgbq 2001-01-03 12:13:00
请问如何从主进程向独立的工作者线程函数传递指针(因为在线程
中需要访问主进程的数据)我用AfxBeginThread(...,this,...)
的方式向线程传递指针出现非法操作.运行调试,系统停留在
Mfc\Src\Wincore.cpp的CWnd::AssertValid() const
函数的以下这几行代码处:
CObject* p;
ASSERT((p = pMap->LookupPermanent(m_hWnd)) != NULL ||
(p = pMap->LookupTemporary(m_hWnd)) != NULL);
ASSERT((CWnd*)p == this);
请问这是为什么?
...全文
116 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
prodigy 2001-01-03
  • 打赏
  • 举报
回复
应传递HWND,然后用CWnd::Attach或CWnd::FromHandle
abnegate 2001-01-03
  • 打赏
  • 举报
回复
应该是用GetSafeHwnd()吧。
hatname 2001-01-03
  • 打赏
  • 举报
回复
AfxBeginThread(...,this,...) ?好象不太对

AfxBeginThread(...,(LPVOID)this,...)看看
smgbq 2001-01-03
  • 打赏
  • 举报
回复
我的程序代码大致如下:
1.独立的工作者线程函数:
UINT SearchThreadFunc(LPVOID pParam)
{
CMydlg * m_dlg=(CMydlg *)(CWnd::FromHandle((HWND)(*pParam)));
......
}
2.主进程函数:
CMydlg::OnSearchdlg()
{
HWND hwnd = GetSafeHwnd();
AfxBeginThread(SearchThreadFunc,&hwnd,THREAD_PRIORITY_NORMAL);
......
}

编译后出现 "illegal indirection"的错误提示,请问这是为什么?

sungang 2001-01-03
  • 打赏
  • 举报
回复
可以使用WinThread创建线程

15,466

社区成员

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

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