Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > не запускается приложение, а ошибок нет


Автор: Lenkov 28.4.2009, 11:06
Не могу выстроить дерево на вкладке (TabConrol), программа глохнет на InsertItem(.....). Кажется проблема в обемене данными между классами, но могу ошибаться.
Пожалуйста подсткажите в чем хоть дело!

Автор: Earnest 29.4.2009, 06:55
Глохнет - это что значит? Ты бы привел локальный кусок кода, ковыряться в твоих проектах нет ни времени, ни желания... 
Само-то дерево у тебя появляется?

Автор: Lenkov 29.4.2009, 22:07
Изначально, проект был без вкладок и дерево строилось (все отлично работало), а потом добавил вкладки и вот там уже не строиться!
Глохнет - это что значит?  - компилируется нормально, т.е. ошибок 0, а именно на добавлении (InsertItem(.....)) появляется ошибка: Line: не помню, Библиотека: не помню и три варианта ответа: прервать, исправить и что то еще.

Автор: Andrey44 30.4.2009, 07:18
Lenkov, покажи кусок кода как добавляешь айтемы.

Автор: Lenkov 30.4.2009, 07:31
я выложил немного не ту папку! извините.... 
новый вариант именно с той проблемой:

Автор: Lenkov 30.4.2009, 10:18
Ведь hWnd не должен быть равен 0 ?! во время выполнения строчки htRoot = m_tree.InsertItem( sqqq, TVI_ROOT, TVI_LAST);

Автор: Andrey44 30.4.2009, 10:48
Цитата(Lenkov @  30.4.2009,  10:18 Найти цитируемый пост)
Ведь hWnd не должен быть равен 0 ?! во время выполнения строчки htRoot = m_tree.InsertItem( sqqq, TVI_ROOT, TVI_LAST); 

hWnd - окна родителя или контрола - конечно нет.

Автор: Lenkov 30.4.2009, 11:04
Хорошо! Почему он тогда равен 0! Что я не так сделал!

Автор: Andrey44 30.4.2009, 11:55
Делай проверку если HWND!=0 тогда что-то делай.

Автор: Lenkov 30.4.2009, 13:56
Цитата

Делай проверку если HWND!=0 тогда что-то делай.

Я считаю, не надо никакой проверки, надо определить из - за чего 0. 
А может вообще не из - за этого?!

Автор: Earnest 4.5.2009, 09:11
Полноценное окно должно иметь валидный hWnd. Скорее всего, ты обращаешься к функциям окна до его создания. Это типичная ошибка новичков - путать C++ объект и WIN окно. 

Автор: Lenkov 4.5.2009, 14:43
Причина была следующая: Т.к. диалоговое окно еще не закрыто и значение функции m_tree не инициализировано, поэтому записывать m_tree.InsertItem( sqqq, TVI_ROOT, TVI_LAST) нельзя! 
Правильно:
Код

СTreeCtrl * m_tree = (СTreeCtrl *) GetDlgItem(IDC_TREE1);
m_tree->InsertItem( sqqq, TVI_ROOT, TVI_LAST);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)