Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2009, 09:19   #1
nusik
Форумчанин
 
Регистрация: 13.04.2009
Сообщений: 117
По умолчанию Ошибка с указателем

Всем привет!
Периодически возникает ошибка , подозрение на этой обработчик:
Код:
void CVerticalTree::OnLButtonDown(UINT nFlags, CPoint point) 
{   
	
	if (m_bCustomDrawn)
	{   
		m_MouseDown=FALSE;
        HTREE2VPMAP::iterator it = m_HTree2VP.begin();
	 	m_bRDragging = TRUE;
	    m_bRDragCanceled = FALSE;	
		while (it != m_HTree2VP.end())
		{
			ItemViewport *vp = (*it).second; 
			if (vp->x <= point.x && ((vp->x+vp->cx) >= point.x)
				&& vp->y <= point.y && ((vp->y+vp->cy) >= point.y))
			{    
				m_hitemDrag=vp->item;
				//ошибка скорее здесь
				if (CVerticalTree::GetItemData(vp->item)==0) CVerticalTree::SetItemData(vp->item,1); 
				else  if (CVerticalTree::GetItemData(vp->item)==1)  CVerticalTree::SetItemData(vp->item,0) ;
				else  {
					   CString str;
					   str.Format(L"%d",CVerticalTree::GetItemData(vp->item));
					   AfxMessageBox(str);
				      }
				CString str=CTreeCtrl::GetItemText(m_hitemDrag);
				m_hitemDrop = NULL;
				SelectDropTarget(NULL);	
				return;
			}
			it++;
		}
		NullAllNodes();
	}
	else 
		CTreeCtrl::OnLButtonDown(nFlags, point);		
}
в ошибке было имя соурса и строка открыл посмотрел...вот на строке с VERIFY вроде
Код:
DWORD_PTR CTreeCtrl::GetItemData(HTREEITEM hItem) const
{
	ENSURE(::IsWindow(m_hWnd));
	ENSURE_ARG(hItem != NULL);
	TVITEM item;
	item.hItem = hItem;
	item.mask = TVIF_PARAM;
	VERIFY(::SendMessage(m_hWnd, TVM_GETITEM, 0, (LPARAM)&item));
	return item.lParam;
}
Спасибо.
nusik вне форума Ответить с цитированием
Старый 15.07.2009, 09:46   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А проверка vp на nil и его item'ов?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.07.2009, 10:13   #3
nusik
Форумчанин
 
Регистрация: 13.04.2009
Сообщений: 117
По умолчанию

Цитата:
А проверка vp на nil и его item'ов?
Проверял вот так
Код:
if ((vp!=NULL) && (vp->item!=NULL)){
if (CVerticalTree::GetItemData(vp->item)==0) CVerticalTree::SetItemData(vp->item,1); 
				else  if (CVerticalTree::GetItemData(vp->item)==1)  CVerticalTree::SetItemData(vp->item,0) ;
				else  {
					   CString str;
					   str.Format(L"%d",CVerticalTree::GetItemData(vp->item));
					   AfxMessageBox(str);
				      }
}
все равно дает ошибку.
nusik вне форума Ответить с цитированием
Старый 15.07.2009, 14:14   #4
nusik
Форумчанин
 
Регистрация: 13.04.2009
Сообщений: 117
По умолчанию

Взял булеан в класс точнее в структуру запихнул, теперь у каждого нода свой булеан, и всё тип топ.
Stilet, спасибо.
nusik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Nero - ошибка драйвера DMA. ошибка CRC NecRoMat Софт 5 09.05.2012 01:29
Ошибка в Аfor i:=1 to SI do. Пишит что ошибка в SI Алексей_xXx Помощь студентам 2 29.05.2009 00:09
...Ошибка 101 (net::ERR_CONNECTION_RESET): Неизвестная ошибка... infrared Помощь студентам 0 16.04.2009 17:44
Подпись под указателем мыши. Iskin Microsoft Office Excel 4 05.12.2008 11:48
ОШИБКА YLIANOVA83 Microsoft Office Word 5 07.03.2008 15:02