lvhaow
驱动小牛
驱动小牛
  • 注册日期2001-10-31
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分44分
  • 威望35点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1682回复:1

VC6编程,工作者线程向主线程发消息出错的问题。

楼主#
更多 发布于:2003-06-04 22:26
程序已经精减到不能再减的地步了,错误依然。如下:
用VC6向导生成一个MFC应用程序框架,对话框模式,无文档视图支持。
定义一个用户消息  #define WM_COMMESSAGE WM_USER+1

定义一个消息处理函数,函数中仅仅输出一个MESSAGEBOX

创建一个线程函数,线程函数中仅仅向主对话框发出一个消息::PostMessage((HWND)pParam,WM_COMMESSAGE,0,0);

在对话框的某个按钮消息处理中,启动线程。
AfxBeginThread(CThreadProc,GetSafeHwnd());

现象是,第一次点击按钮,消息框正常弹出,按确定钮取消,表明线程启动、消息发送、以及消息处理都正常;
但第二次点击按钮后,消息框弹出正常,但是在点消息框的\"确定\"钮取消后,麻烦来了,系统报错为:
unhandled exception in test.exe,0xC0000005 Access Violation
函数调用栈依次为:
CWnd::AttachControlSite()
CWnd::FromHandle()
CWinThread::PreTranslateMessage()
CWinThread::PumpMessage()
CWnd::RunModalLoop()
CDialog::DoModal()
THREAD! CThreadApp::InitInstance(void)
WinMain()
最上面的一个函数为出错的函数,很明显是主窗口(也就是对话框)的消息处理出错了。
哪里还会出错??程序已经简化的没得再减了!!

lvhaow
shyandsy
驱动牛犊
驱动牛犊
  • 注册日期2007-12-21
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分447分
  • 威望183点
  • 贡献值0点
  • 好评度41点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-01-12 06:10
 MFC 跑这里干吗 这是KERNEL
选择喜欢做的事,就要努力去做!
游客

返回顶部