动态生产的控件在RELEASE下响应消息时发生ACCESS VIOLATION 错误
在DEBUG下面运行一直没问题,RELEASE下面会出错。错在动态创建的控件响应消息的时候,控件包括COMBOBOX,EDIT,响应的消息有SEL_CHANGE,EN_CHANGE,相关代码如下:
ccombobox* m_checkcombobox = new CCheckComboBox();
if ((m_nLeft+130)>(m_iWidth))
{
m_nLeft = LEFT_BORDER;
m_nTop += m_iCurrentHeight + 10;
}
CRect rec = CRect(m_nLeft,m_nTop,(m_nLeft+120),(m_nTop+100));
m_nLeft+=130;
if(!m_checkcombobox->Create(dstyle|WS_VSCROLL,rec,this,m_IChkListNo++))
{
TRACE0("Failed to create output view-----\n");
return false;
}
m_checkcombobox = NULL;
响应消息的函数里面:
for (j = ID_DYNAMIC_CHECKLIST_START;j< ID_DYNAMIC_CHECKLIST_END;j++)
{
CString strtmp = "";
if ((CWnd*)GetDlgItem(j)!= NULL)
{
CStringArray strarr;
((CCheckComboBox*)GetDlgItem(j))->GetCheckString(&strarr);
..........
这句代码是改过的if ((CWnd*)GetDlgItem(j)!= NULL),原来是if (GetDlgItem(j)!= NULL),一样会出错。
而且RELEASE不能编译成带调试信息的,不能具体定位到具体哪一行,但是可以肯定的是在下拉框可以弹出来,一选择值就出错了,就是ACCESS VIOLATION.