3245|4

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

创建新线程后,在调试跟踪的时候,新线程中对传入参数(一个控件)实施操作的时候报错 [复制链接]

点击一个按钮后,创建一个线程,传入一个参数(一个控件,比如是CComboBox),在新线程里对该控件实施操作的时候,系统提示说MFCCE300.DLL错误,语句定到ASSERT一行,说SENDMESSAGE的时候有错误,如果是跟踪调试的话,线程变量显示的那个小窗体的标题就灰了不可用了,这是什么问题,请点拨下.谢谢.

最新回复

谢谢二楼,下次分给你,呵呵.  详情 回复 发表于 2008-6-20 12:20
点赞 关注

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
建议你调整一下代码,这种做法实在不可取。

界面的东西应该在同一个线程中写。

别的线程需要界面的,应该通过线程通讯来处理。
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
1、线程传参数应该传指针吧,保证你的指针的正确性  比如
CreateThread(LPVOID tt)

CComboBox* a = (CComboBox*)tt;
或者直接发送 HWND 即可

   
2、MFCCE300.DLL错误  看看你系统是否支持 MFC
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

4
 
谢谢楼上二位的回答,我测试的程序是《EVC高级编程及其应用开发》中的例子。我查阅了些资料,说“{ ASSERT(::IsWindow(m_hWnd)); ::SendMessage(m_hWnd, CB_RESETCONTENT, 0, 0); }”这样的错误是由于参数传到线程里了,但该控件却还没有创建,或创建失败,所以向它发消息就失败了,地址为空。加个ASSERT宏来验证下再继续,但我有个事情感觉有些奇怪,这个现象属于偶发性的,10次出8次,还有一两次倒完全可以正常运行。一楼所说我完全赞同,只是我的程序里,要建立个线程专门用于监听套接口的数据,线程里是循环while(1),对收到的数据包进行解析后填充到控件里,我知道这可能不是好的办法,因为我原先一只做linux c的,习惯了API,不喜欢封装后的SOCKET类,对于要重载OnSend,OnReceive之类的函数,总是感觉异样,且总是一来一去的通信模式,我正开发的是类似与MSN的即时通信软件,纯粹是业余爱好,并非工作需要,我用linux C实现了服务端,用VC实现了WINDOWS平台的客户端,用GTK+实现了linux客户端,现在正在想用EVC实现PDA版,服务器架在公网上了,可以运行了。再次感谢楼上二位。怎么送分呀?
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

5
 
谢谢二楼,下次分给你,呵呵.
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表