请教一个关于程序崩溃的问题

twins222 2009-08-13 06:23:29
我的程序与一个PLC相连,我在程序运行的时候,当出现某一个值大于某一设定值的时候就弹出一个提示框,现在的问题是,我如果移动这个提示框的位置后,再手动输入一个实数的时候,程序就崩溃了,而如果不移动这个提示框就输入某一数值,就不会崩溃,请问大家知道这个是什么原因吗?我知道这样问比较笼统,因为我不知道是哪里的代码问题,不知道贴哪里的代码,请给我一些提示就行。谢谢了
...全文
126 点赞 收藏 11
写回复
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
pomelowu 2009-08-14
看你用的什麽版本吧。主要是堆棧溢出和訪問衝突的幾個異常的勾都勾上。
回复
twins222 2009-08-14
[Quote=引用 6 楼 xiaoc1026 的回复:]
查看堆栈。
[/Quote]
如何查看啊,谢谢
回复
twins222 2009-08-14
[Quote=引用 5 楼 tttyd 的回复:]
是不是多线程的程序?
你主线程的窗口绘制工作多不多?
[/Quote]
主要就两个线程,一个是主线程,一个是关于驱动方面的,也就是说基本所有的工作都是主线程在做,窗口绘制工作挺多的。
回复
twins222 2009-08-14
[Quote=引用 4 楼 pady_pady 的回复:]
和你弹出的对话框类有关,一般是类里有越界或者调用这个对话框的位置有问题

移动提示框是否触发了别的什么窗口的重绘?而重绘的代码有问题?
[/Quote]
void CMainFrame::ShowPicture( TCHAR* pPicName )
{
// first find id of this picture.
WORD wID = 0;
wID = m_ViewManager.FindID( pPicName );
if( wID == 0 )
{ // no this picture.
ASSERT( FALSE );
return;
}
//added by david bao
if( m_CurFocusRecord.pViewPicWnd )
m_CurFocusRecord.pViewPicWnd->Exit() ;
////////////////////
ShowPicture( wID);
}

// only used to support action.
void CMainFrame::ShowPicture( WORD wID )
{
int VarSum;
HGLOBAL* pVarInfor = NULL;

pVarInfor = m_RealDB.GetVarInfor( VarSum );

ShowPicture( wID, pVarInfor, VarSum );

m_RealDB.FreeVarInfor();
}
以上是调用弹出对话框所用的函数ShowPicture函数,大家看看有什么问题吗?
回复
bohut 2009-08-13
移动提示框是否触发了别的什么窗口的重绘?而重绘的代码有问题?
设断点跟一下。
回复
见习学术士 2009-08-13
查看堆栈。
回复
雪影 2009-08-13
是不是多线程的程序?
你主线程的窗口绘制工作多不多?
回复
pady_pady 2009-08-13
和你弹出的对话框类有关,一般是类里有越界或者调用这个对话框的位置有问题
回复
wjunshan 2009-08-13
debug下调试,堆栈中找到发生问题的地方
回复
twins222 2009-08-13
[Quote=引用 1 楼 pomelowu 的回复:]
vc 調試 → 異常,把win32 exceptions都勾上,看能不能調試抓住崩潰的異常。。。
[/Quote]
您说的这个win32 exceptions在什么位置,我没有找到啊
回复
pomelowu 2009-08-13
vc 調試 → 異常,把win32 exceptions都勾上,看能不能調試抓住崩潰的異常,然後看調用堆棧是哪裡出錯的。
你的描述上看,估計跟彈出提示框有一定關係。查看下有沒有數組越界啥的。
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告