hur.cn - 华软网

 热门搜索

debug下的断言错误,请教~

  作者:未知    来源:网络    更新时间:2011/4/16
我写了一个程序,运行的时候是正常的,然则我向tab生成的第一个标签里的对话框的的一个spin控件增加一个变量m_spin1,用debug调试的时候就出现了一个断言毛病。
ASSERT(pWnd->m_hWnd == NULL);   // only do once ----定位在这句
而用release调试的时候就能够运行,讨教列位大虾,这是怎么回事呢,有没有人遇到类似的问题?

---华软 网友回答---
你增加了以后做了什么?这个毛病要么是你向已经绑定的变量举行subclass,要么是你用统一个变量两次创建窗口乐

---华软网友回复---
按照毛病提醒,你的变量create屡次,至于在release下能够运行是由于在release模式下,忽略ASSERT TRACE 之类的宏
---华软网友回复---
什么都没做~只是用tab控件增加了两个对话框,然后往其中一个对话框加个spin控件,到这里的时候照旧没犯错的,一增加变量后就出现毛病了~
tab里边的初始化:
C++">  
//为Tab Control增加两个页面
     m_tab.InsertItem(0, _T("First"));
     m_tab.InsertItem(1, _T("Second"));
    
     //创建两个对话框
     m_page1.Create(IDD_Dlg1, &m_tab);
     m_page2.Create(IDD_Dlg2, &m_tab);

     //设定在Tab内显示的范围
     CRect rc;
     m_tab.GetClientRect(rc);
     rc.top += 20;
     rc.bottom -= 8;
     rc.left += 8;
     rc.right -= 8;

     m_page1.MoveWindow(&rc);
     m_page2.MoveWindow(&rc);

     //把对话框对象指针保存起来
     pDialog[0] = &m_page1;
     pDialog[1] = &m_page2;

     //显示初始页面
     pDialog[0]->ShowWindow(SW_SHOW);
     pDialog[1]->ShowWindow(SW_HIDE);

     //保存当前选择
     m_CurSelTab = 0;

---华软网友回复---
是这个地方ASSERT(pWnd->m_hWnd == NULL);犯错的吗
那应该是pWnd->m_hWnd非空啊
---华软网友回复---
向tab生成的第一个标签里的对话框的的一个spin控件增加一个变量m_spin1,用debug调试的时候就出现了一个断言毛病
--------------------
你的m_spin1对象联系关系了你的spin窗口了没有?
---华软网友回复---
TO:LSS 出现Debug Assertion Failed! 重试后发现毛病出现在这句ASSERT(pWnd->m_hWnd == NULL);
TO:LS 用向导增加的变量:DDX_Control(pDX, IDC_SPIN1, m_spin1);已经联系关系了spin控件
---华软网友回复---
犯毛病后看看调用堆栈
找到引起毛病的函数
---华软网友回复---
调试时发现  this   {CDlg2 hWnd=0x00000000} 
为啥给Dlg1增加变量 Dlg2的为0了?
初学者,对内部体制不太懂~

---华软网友回复---
release版本...断言部份是要被优化掉的...

在debug下设置多设置几个断点,调试下吧...
---华软网友回复---
其中一个对话框加个spin控件.
// 这个对话框是否是要是把属性改成 子窗口。
---华软网友回复---
TO LS:窗口是 无边框,child型的~
调试了快一整天了~主要是不太明白问题在那里~~
请列位大虾指点一下啊~~
---华软网友回复---
这里没看到你哪儿有那个spin控件阿?

---华软网友回复---
ASSERT(pWnd->m_hWnd == NULL); // only do once ----定位在这句


=====================


有点怀疑你的断言用错了,通常为防止空指针的非法值

ASSERT(pWnd->m_hWnd != NULL); 


---华软网友回复---
回LSS:spin控件在第一个对话框里面~我是用tab创建了两个页面,第一页上面放上了个spin控件~
回LS:那句断言是系统的程序啊~
---华软网友回复---
引用 14 楼 dido3200 的回复:
回LSS:spin控件在第一个对话框里面~我是用tab创建了两个页面,第一页上面放上了个spin控件~
回LS:那句断言是系统的程序啊~
不是让你看调用堆栈么      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。