线程问题:

crocodile1980 2004-05-05 11:57:49
在线程的内部是否不能使用CMainFrame *的指针?
UINT CommThread(void *pw)
{
CMainFrame *pMainWnd=(CMainFrame *)AfxGetMainWnd();
CGpsWatchView *pView=(CGpsWatchView *)pMainWnd->GetActiveView();
//此处错,无法使用pView指针?
CSelectDlg *pThis=(CSelectDlg*)pw;
.....
return 0;
}
...全文
19 5 点赞 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
aspnetwuxueyou 2004-05-06
http://www.csdn.net/Develop/article/26/26152.shtm
  • 打赏
  • 举报
回复
aspnetwuxueyou 2004-05-06
CWnd是模块线程相关的一个类,也就是在不同的不同模块,不同线程中值是不同的
但是HWnd是线程无关的,就是可以跨线程的
  • 打赏
  • 举报
回复
UDX协议 2004-05-06
在线程的内部能使用CMainFrame *的指针

CGpsWatchView *pView=(CGpsWatchView *)pMainWnd->GetActiveView();
是pMainWnd->GetActiveView();初步确定出了问题。

--------------------》
在调试情况下改成CView *pView = pMainWnd->GetActiveView();看此时pView的类型是否为CGpsWatchView.
可以这样判断
CRuntimeClass* prt = RUNTIME_CLASS( CGpsWatchView);
ASSERT( lstrcmp( prt ->m_lpszClassName, "CGpsWatchView" ) == 0 );

  • 打赏
  • 举报
回复
UDX协议 2004-05-06

在线程的内部能使用CMainFrame *的指针

CGpsWatchView *pView=(CGpsWatchView *)pMainWnd->GetActiveView();
是pMainWnd->GetActiveView();初步确定出了问题。

--------------------》
在调试情况下改成CView *pView = pMainWnd->GetActiveView();看此时pView的类型是否为CGpsWatchView.
可以这样判断
CRuntimeClass* prt = RUNTIME_CLASS( CGpsWatchView);
ASSERT( lstrcmp( pView ->m_lpszClassName, "CGpsWatchView" ) == 0 );
  • 打赏
  • 举报
回复
microgiant 2004-05-06
你起线程的时候带近来一个this就是了.MainWnd,从this中带出来.
  • 打赏
  • 举报
回复
相关推荐
发帖
界面
加入

1.5w+

社区成员

VC/MFC 界面
申请成为版主
帖子事件
创建了帖子
2004-05-05 11:57
社区公告
暂无公告