如何在一个线程中在statusbar上显示文字!!!!!!!!!!!(最好有源代码)

tryibest 2001-11-03 12:21:31
我在mainframe里用
CWinThread *pThread=AfxBeginThread(ThreadSearch,&xxx,THREAD_PRIORITY_NORMAL);
新建了一个线程,想在线程中使statusbar上显示文字
操作如下
UINT ThreadSearch(LPVOID pParam)
{
CMainFrame *pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd;
pFrame->m_wndStatusBar.SetPaneText(0,_T("abc"));
return 0;
}
我已经把
mainframe中的statusbar.create改为了
if (!m_wndStatusBar.Create(this,WS_CHILD|WS_VISIBLE|CBRS_BOTTOM,ID_MY_STATUS_BAR) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}
但一运行,就说wincore.cpp文件883行出错,忽略以后可以显示我要的结果,不知是什么原因,请大帮助!!!!!!谢谢
email:
tryubest@citiz.net

...全文
142 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ydogg 2001-11-04
  • 打赏
  • 举报
回复
AfxBeginThread时传递this指针或者AfxGet

1.传递框架指针
CMainFrame *pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CWinThread *pThread=AfxBeginThread(ThreadSearch,pFrame,THREAD_PRIORITY_NORMAL);

2.
UINT ThreadSearch(LPVOID pParam)
{
CMainFrame *p = (CMainFrame *)pParam;
pFrame->m_wndStatusBar.SetPaneText(0,_T("abc"));
return 0;
}
supperapplication 2001-11-03
  • 打赏
  • 举报
回复
worker thread is diffrent from user thread.
tryibest 2001-11-03
  • 打赏
  • 举报
回复
up
darkay 2001-11-03
  • 打赏
  • 举报
回复
我也遇到了类似的问题,我跟了一下应是AfxGetxxx这类的函数在worker thread中工作不正确,得到的句柄都是不对的,不知道有没有高手知道其中的道理以及如何使用才行呢?对拉,FromHandle好像是个方向,我看了一些VC的例子好像也是用这个函数的,但是不是很理解个中的用法
yaya_zhu 2001-11-03
  • 打赏
  • 举报
回复
将状态栏句柄传进线程试试
tryibest 2001-11-03
  • 打赏
  • 举报
回复
voidman()能不能说的详细一点,最好能发给我一个例子
voidman 2001-11-03
  • 打赏
  • 举报
回复
不要在一个线程里操纵别的线程里的MFC类,用FromHandle,或者用Attach生成自己线程的MFC类再操纵它

15,471

社区成员

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

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