求牛人帮忙!!!Release下的unhandled exception问题!

amagic 2007-01-05 11:35:28
程序在Debug中没有问题,但在Release下就会出现unhandled exception in config.exe: 0xC0000005: Access Violation.

界面中有一个list control控件,里面有一行内容,在这一行之上双击事件是正确的,但要是在空白处双击会有上面这个错误.

BEGIN_MESSAGE_MAP(CSetODBCDlg, CDialog)
ON_NOTIFY(NM_DBLCLK, IDC_ODBC_BASE_LIST, OnListDbClick) //双击list control
END_MESSAGE_MAP()

void CSetODBCDlg::OnListDbClick()
{
POSITION pos = ((CListCtrl*)GetDlgItem(IDC_ODBC_BASE_LIST))->GetFirstSelectedItemPosition();
if (pos == NULL) //点击一个空行
{
TRACE0("No items were selected!\n");
}
else //点击一个非空行
{
int nItem = ((CListCtrl*)GetDlgItem(IDC_ODBC_BASE_LIST))->GetNextSelectedItem(pos);

CDirSearchCfgDlg dlg(this,EDirectoryODBC,nItem);
dlg.DoModal();
}
}

麻烦各位牛人帮忙分析一下,万分感谢!!!
...全文
441 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
amagic 2007-01-05
  • 打赏
  • 举报
回复
这个list control一直会有问题,不知道是不是初始化函数的问题,麻烦看看,谢谢!
BOOL CSetODBCDlg::OnInitDialog()
{
LOAD_DYNSTRINGS(theApp.GetDico());

m_popmenu.LoadMenu(IDR_DIR_PMENU_ODBC_CFG);
theApp.GetDico()->TranslateMenu(&m_popmenu);

CListCtrl *listCtrl = (CListCtrl*)GetDlgItem(IDC_ODBC_BASE_LIST);

// Draw and load control
DrawControl();

listCtrl->SetItemState(0, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);

//Get defined base in registry
if (DIR_IsODBCDirectoryExist())
{
int nbODBCdir = DIR_GetODBCDirectoryNb();
ODBCBaseDef odbcBaseDef;

for (int i=0;i<nbODBCdir;i++)
{
DIR_GetODBCDirectoryInfo(i, &odbcBaseDef);
AddItem(&odbcBaseDef);
}
}

listCtrl->SendMessage( LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);


return FALSE;
}

void CSetODBCDlg::DrawControl()
{
CListCtrl *listCtrl = (CListCtrl*)GetDlgItem(IDC_ODBC_BASE_LIST);

CRect rect;
listCtrl->GetClientRect(&rect);
rect.right -= CXVSCROLL + 1;

// create column
LV_COLUMN lvC;

lvC.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvC.fmt = LVCFMT_LEFT;

// Create only one column
lvC.iSubItem = 0;
lvC.pszText = (TCHAR*)_TRANSLATE("SC_ODBC_DIRECTORY_NAME");
lvC.cx = rect.Width()*3/10; // column 1

listCtrl->InsertColumn(0, &lvC);

lvC.iSubItem = 1;
lvC.pszText = (TCHAR*)_TRANSLATE("SC_ODBC_FILE_NAME");
lvC.cx = rect.Width()*11/20; // column 2

listCtrl->InsertColumn(1, &lvC);

lvC.iSubItem = 2;
lvC.pszText = (TCHAR*)_TRANSLATE("SC_ODBC_TABLE_NAME");
lvC.cx = rect.Width()*1/5; // column 3

listCtrl->InsertColumn(2, &lvC);

}
jacklzw88 2007-01-05
  • 打赏
  • 举报
回复
就个不知道问题出在哪,你输出调试信息,一步一步排查只能
fanUser8212 2007-01-05
  • 打赏
  • 举报
回复
在空白处点击时nItem == -1, CDirSearchCfgDlgdlg(this,EDirectoryODBC,nItem);
在nItem==-1时有问题,将nItem==-1的情况去屏蔽掉就行了
amagic 2007-01-05
  • 打赏
  • 举报
回复
加分求助啦!!!麻烦分析一下!!!谢谢!

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧