小弟弄了一个在线打牌的软件,为适合潮流在里同加入了一个 了天 的功能,用于在打牌(或是看牌)的同时支持了天。由于牌的显示之类的操作会影响到另一个 了天 窗户口的消息的正常工作,因此如果出牌的时候(从网络传来的数据)正巧自己在了天窗户口输入,这时输入就会变得没有响应,要等牌出完后才恢复正常。为了避免这种情况我另外弄了一个界面线程,把了天窗户口放在里面这样让他有一个单独的消息循环。 了天窗户口里面的OUTPUT部分为了适合潮流选用具有”格式化“功能的RICHEDIT控件
现在用的是RICHED2。 现在问题出来了,在2000下运行正常,可在98下程序退出的时候大多数情况下就会死机(蓝屏的那种),后来我偿试将RICHEDITCTRL去掉,则程序运行正常。我也偿试不用界面线程,程序也运行正常。因此我初步分析是由于RICHEDCTRL以及线程造成,但又不可能不用,所以想请各位有经验的大侠给讲讲在这种情况下该怎么样正确处理,另外我今天听一个朋友说在98下如果可能尽量不要用RICHEDCTRL,说很多时候会出兼容性问题。想听各位的意见,在线守候
QQ:57226475谢谢谢谢
现在用的是RICHED2。 现在问题出来了,在2000下运行正常,可在98下程序退出的时候大多数情况下就会死机(蓝屏的那种),后来我偿试将RICHEDITCTRL去掉,则程序运行正常。我也偿试不用界面线程,程序也运行正常。因此我初步分析是由于RICHEDCTRL以及线程造成,但又不可能不用,所以想请各位有经验的大侠给讲讲在这种情况下该怎么样正确处理,另外我今天听一个朋友说在98下如果可能尽量不要用RICHEDCTRL,说很多时候会出兼容性问题。想听各位的意见,在线守候
QQ:57226475谢谢谢谢
解决方案 »
- 好难啊。Bitmap*的变量和CBitmap怎么通过HBITMAP互相转换
- 搞了两年c++,都是做一些控制台下面的东西,想搞点界面,该学点啥啊
- cryptopp与openssl的安全性。
- 游戏驱动保护问题
- VC++屏蔽Ctrl+Alt+Del
- vc6工程用vc7编译转换后为什么stl(例如vector)不能用呢?如何解决?
- CComVariant 和 CString 怎么轉化呀?急!小妹先謝謝了
- 请帮忙!!(在线)
- 不能向表中添加行,是怎么回事?
- 怎么在MDI中创建新的子窗口,不用OnFileNew();,谢谢!
- 难题!如何在 Win9x 里面启用/停用设备?
- 如何在对话框中得到当前视图指针并操作?
2。基于商业的考虑,在程序顶部有一个HEADBAR(自CTOOLBAR),最左边包含有一个
WEBBROSER(该代码是利用VC工具自动产生的)。该控件依赖于shdocvw.dll
而在程序异常前堆栈就是显示的
shdocvw! xxxxx:xxxxxx , 当我把该控件从HEADBAR中去掉时,程序又运行正常另外:通过DEBUG发现程序没有明显的内存泄漏现象,有的只是两个我无法控制的
底层C的代码。好象越来越奇怪了,请人支持
相关截图:
http://www.softdeveloper.net/uploads/pic/error/debug_screen/index2.htm
后来加了一个,在我DEBUG到HEADBAR上的ONDESTROY里面
时
void CHeadBar::OnDestroy()
{
m_Broswer.Stop(); //此句出现异常 access voilation(c0000005)
m_Broswer.Quit(); CToolbar::OnDestroy();
}怎么解决,哪位给个意见!
我决定用TRY语句强行略掉!!!不过不知道会不产生其它问题唉,郁闷
try
{
m_Browser.stop
m_Browser.quit();
Ctoolbar::ondestroy();
}
catch(...)
{
TRACE("DDD");
}虽然在这里是把这个异常糊弄过去了,可后来那异常又跑出来了,
//=================================================
你说当那异常出现的时候为什么看不到异常堆栈呢
红黑箭条衫 00:24:27
有点儿像是另一个线程在执行什么东西而引起的,而不是当前调用引起的,对不对
chunlin 09:28:35
对
红黑箭条衫 00:25:03
用SPY鸡窝到那个WEBBROSWER开了几个线程
红黑箭条衫 00:25:14
有没有可能就是那里面搞的鬼
chunlin 09:29:22
有可能
请高手现身
在工程属性对话框的C/C++ 标签页里,选择“Code Generation”分类,把“Use run-time library”下拉列表中随便选一个Multithreaded,再编译一下
[偶在某处已经回答过一遍完全一样的问题啦,哈哈]
===================================================
Digit Pro space 欢迎您
http://www.dpspace.com
有什么问题到论坛上发表,我将尽我全力为您解决
论坛欢迎高手注册加入,让我们共同进步
在工程属性对话框的C/C++ 标签页里,选择“Code Generation”分类,把“Use run-time library”下拉列表中随便选一个Multithreaded,再编译一下
[偶在某处已经回答过一遍完全一样的问题啦,哈哈]
=================
我现在的设置是 debug multithread
在RELESET版本下是 multithread请大虾继续指导,我请你吃饭!
等我把这问题测底解决了,我会整理好后放到你那去的,谢谢你的关注
[email protected]
http://expert.csdn.net/Expert/TopicView1.asp?id=1839588
调用时的堆栈图:http://www.softdeveloper.net/uploads/pic/error/2.jpg
请大虾继续帮我分析,请吃饭!
你有做了什么操作后出事的,是创建后、显示、收发消息、或者调什么函数后
RichEdit的环境比如是在SDI中么,有什么保存Dock 之类的调用么
建议:
1.把几个相关的类WEBBROSWER/HEADBAR/RICHEDIT 提出来放到新建的工程里,看看会不会出错,如果也出错的话把这个工程给偶2.如果你可以接受“只改变字的颜色”建议你把RichEdit换掉(这样该应该是最快),以下页面有两个可改变颜色的控件Crystal 和Colorizing
http://www.codeproject.com/editctrl/
b = CreateEx(pParent,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_ALIGN_TOP|CBRS_FLYBY|CBRS_SIZE_DYNAMIC,CRect(0,0,0,0),id);然后在98重新编译测试,发现最初用BC查出的的那个 “错误参数” 不见了! 我心一喜
之后测试退出12次,均没有发生异常现象,因此我现在估认为这个BUG已经解决了,BUG的原因是爸爸窗户口采用的创建方法不正确(但是创建成功了)而造成了,现在已经提交用户测试了正等待好消息 ^_^不过还有一个奇怪的问题(以前也存在,机率很小),就是把MOUSE MOVE到TOOLBAR的左边的BUTTON上时会出奇怪的堆栈
http://www.softdeveloper.net/uploads/pic/error/debug_screen/
后来我用TRY语句把他给滤掉了,就OK了,不过心里还是不踏实唉,一个星期没怎么睡觉,BUG解除了好象更睡不着了,程序员真苦!
你把原来出事的那个和可用的两个程序都拿来,在98下面看一下它们的Control ID,如果不一样的话,这个问题就不必再去理会了
没什么好建议,继续用TRY吧
你把原来出事的那个和可用的两个程序都拿来,在98下面看一下它们的Control ID,如果不一样的话,这个问题就不必再去理会了
==================
嗯,肯定是不一样的,我查过了