CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  进程/线程/DLL

为什么在线程中调用主对话框函数时会出错?看一下我的代码

楼主thindz(半截)2002-04-12 08:31:01 在 VC/MFC / 进程/线程/DLL 提问

UINT   MyRcvThread(LPVOID   pParam)  
  {  
  CMyDlg   *p=(CMyDlg   *)pParam;  
  p->showtext("kkk");  
  //debug   assertion   failed.         file:wincore.cpp   line   :884  
  return   1;  
  }  
  void   CMyDlg::OnOK()    
  {  
                  AfxBeginThread(MyRcvThread,this,THREAD_PRIORITY_NORMAL);  
  }  
  void   CMyDlg::showtext(CString   str)  
  {  
  m_sRcv=str;  
  UpdateData(FALSE);  
  }  
  问题点数:40、回复次数:7Top

1 楼netboys(笨小孩)回复于 2002-04-12 08:35:19 得分 5

试试下面的:  
  UINT   MyRcvThread(LPVOID   pParam)  
  {  
          this->showtext("kkk");  
  //debug   assertion   failed.         file:wincore.cpp           line   :884  
          return   1;  
  }Top

2 楼thindz(半截)回复于 2002-04-12 08:40:31 得分 0

不行的,全局函数没有this指针Top

3 楼djhdu(小火花)回复于 2002-04-12 09:32:09 得分 5

你的代码只有这些吗?Top

4 楼qunta(J2Y2)回复于 2002-04-12 09:52:22 得分 30

问题出在   UpdateData上,试试这个  
  void   CMyDlg::showtext(CString   str)  
  {  
          m_sRcv=str;  
          SetDlgItemText(IDC_SRCV,   m_sRcv);  
  }  
   
  wincore.cpp   line   886有如下说明:  
  //   Note:   if   either   of   the   above   asserts   fire   and   you   are  
  //   writing   a   multithreaded   application,   it   is   likely   that  
  //   you   have   passed   a   C++   object   from   one   thread   to   another  
  //   and   have   used   that   object   in   a   way   that   was   not   intended.  
  //   (only   simple   inline   wrapper   functions   should   be   used)  
  //  
  //   In   general,   CWnd   objects   should   be   passed   by   HWND   from  
  //   one   thread   to   another.     The   receiving   thread   can   wrap  
  //   the   HWND   with   a   CWnd   object   by   using   CWnd::FromHandle.  
  //  
  //   It   is   dangerous   to   pass   C++   objects   from   one   thread   to  
  //   another,   unless   the   objects   are   designed   to   be   used   in  
  //   such   a   manner.  
  Top

5 楼djhdu(小火花)回复于 2002-04-12 10:14:44 得分 0

我试了试,为什么一直提示     'CRDlg'   :   undeclared   identifier  
                                                      'p'   :   undeclared   identifierTop

6 楼djhdu(小火花)回复于 2002-04-12 10:16:31 得分 0

应该是'CMyDlg':undeclared   identifierTop

7 楼thindz(半截)回复于 2002-04-12 10:34:29 得分 0

那些英文几乎都认识,但连起来却不知道说什么了。  
  问题确实是在UPDATEDATA上。我只好用POSTMESSAGE了。  
    qunta(旺财1860)的例子我没试过但先谢谢了。Top

相关问题

  • 如何调用对话框的成员函数而不显示对话框。
  • 如何在其它对话框中调用某对话框的OnEraseBkgnd()函数?
  • 紧急求助:如何调用父对话框的函数
  • 如何在自己定义的函数中调用对话框?
  • 对话框在initDialog()后,还自动调用其它函数吗?
  • vc 对话框窗口中调用函数的问题
  • 关于调用通用对话框的问题(FindText函数)
  • 子对话框最小化调用什么函数?
  • 一个对话框调用外部函数中怎么操作对话框中控件?
  • 出学者提问:如何在全局函数中调用一个对话框

关键词

  • c++
  • cpp
  • srcv
  • cmydlg
  • showtext
  • myrcvthread
  • wincore
  • pparam
  • updatedata
  • cwnd

得分解答快速导航

  • 帖主:thindz
  • netboys
  • djhdu
  • qunta

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo