#visual-studio #visual-studio-2008 #mfc
#visual-studio #visual-studio-2008 #mfc
Вопрос:
Я следую примеру 8a из книги MFC под названием (Программирование с помощью Microsoft Visual C .NET, шестое издание).
Однако, когда я попытался скомпилировать его, я столкнулся со следующими исключениями:
Unhandled exception at 0x78a782ac (mfc90ud.dll) in Ex08a.exe:
0xC0000005: Access violation reading location 0x00000020.
который указывает на
{
ASSERT(::IsWindow(m_hWnd));
return CImageList::FromHandle((HIMAGELIST)::SendMessage(m_hWnd, LVM_SETIMAGELIST,
nImageList, (LPARAM)pImageList->GetSafeHandle()));
}
в afxcmn.inl
Поскольку я использую Visual studio 2008, существуют различия между моим кодом и кодом книги.
Следующие строки являются некоторыми из этих несоответствий:
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, amp;CEx08aDialog::OnLvnItemChangedListview1)
ON_NOTIFY(TVN_SELCHANGED, IDC_TREEVIEW1, amp;CEx08aDialog::OnTvnSelchangedTreeview1)
static char* color[]={"white","black","red","blue","yellow","cyan","purple","green"};
pList->InsertItem(n,(LPCTSTR)color[n],n);
Любые комментарии приветствуются.
Комментарии:
1. «местоположение 0x00000020» подразумевает попытку доступа к переменной-члену через указатель, для которого установлено значение NULL (смещение элемента в классе равно 32 байтам). Посмотрите вокруг, когда получите исключение, и найдите этот нулевой объект (возможно, тот самый CListCtrl, который вы вызвали, но я не могу сказать наверняка).
2. @eran: ваш комментарий должен быть ответом, ИМХО
3. @Serge-appTranslator, я не сделал это ответом, потому что он неполный. Учитывая ограниченный объем информации по этому вопросу, я не могу сказать, какой указатель имеет значение NULL, и я, очевидно, не могу сказать, почему. Если я получу какую-то обратную связь от OP, я мог бы превратить ее в ответ.