Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> List Box, VC++ 
:(
    Опции темы
Goldberg
Дата 6.7.2004, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 3.6.2004

Репутация: нет
Всего: нет



Здраствуйте, я недавно начал изучать VC++, ну и чтобы ускорить процесс, скачиваю различные исходники, разбираюсь в них, изменяю...
Скачал вот этот исходник: http://www.sources.ru/cpp/cpp_cdirtreectrl_browser.shtml
И вот собственно вопрос:
Имеется класс CDirTreeCtrl, у него функция:
Код
void CDirTreeCtrl::ExpandBranch(HTREEITEM parent)
{
   bool bOne=false;

  if(parent==m_drives_root)
  {
     char *ptr;

      DeleteAllChild(parent,false);
     GetLogicalDriveStrings(500,m_drives_name);

     ptr=m_drives_name;

     while (*ptr)
     {
           bOne=true;
        AddItem(ptr, m_drives_root, true);
        ptr+=strlen(ptr)+1;
     }
  }
  else
  {
       CString fullpath,pathWildcard;

       fullpath=GetPathFromHere(fullpath, parent);
       DeleteAllChild(parent,false);
       pathWildcard=fullpath+"*.*";

       CFileFind finder;
       BOOL bWorking = finder.FindFile(pathWildcard);
       while (bWorking)
           {
           bWorking = finder.FindNextFile();
           if ( finder.IsDirectory() && !finder.IsDots() )
               {
               bOne=true;
               HTREEITEM itm=AddItem (fullpath+finder.GetFileName(), parent );
               InsertItem("",itm);
               }
           }
       
       bWorking = finder.FindFile(pathWildcard);
       while (bWorking)
           {
           bWorking = finder.FindNextFile();
           if ( !finder.IsDirectory() && MatchExtension(finder.GetFileName()) )
               {
               bOne=true;
               AddItem (fullpath+finder.GetFileName(), parent );
               }
           }

  }
   
   if (!bOne) InsertItem( "",parent);
}

Здесь дерево заполняется списком папок и файлов, я решил изменить функцию так, чтобы в дерево заносились только папки, а файлы в List Control.
Делаю так:
Создаю для List Control класс - class CListF : public CListCtrl
Затем в выше приведенную функцию изменяю:
Код
void CDirTreeCtrl::ExpandBranch(HTREEITEM parent)
{
   bool bOne=false;
   int coun = 1; //ОБЪЯВЛЯЮ СЧЕТЧИК
  if(parent==m_drives_root)
  {
     char *ptr;

      DeleteAllChild(parent,false);
     GetLogicalDriveStrings(500,m_drives_name);

     ptr=m_drives_name;

     while (*ptr)
     {
           bOne=true;
        AddItem(ptr, m_drives_root, true);
        ptr+=strlen(ptr)+1;
     }
  }
  else
  {
       CString fullpath,pathWildcard;

       fullpath=GetPathFromHere(fullpath, parent);
       DeleteAllChild(parent,false);
       pathWildcard=fullpath+"*.*";

       CFileFind finder;
       BOOL bWorking = finder.FindFile(pathWildcard);
       while (bWorking)
           {
           bWorking = finder.FindNextFile();
           if ( finder.IsDirectory() && !finder.IsDots() )
               {
               bOne=true;
               HTREEITEM itm=AddItem (fullpath+finder.GetFileName(), parent );
               InsertItem("",itm);
               }
           }
       
       bWorking = finder.FindFile(pathWildcard);
       while (bWorking)
           {
           bWorking = finder.FindNextFile();
           if ( !finder.IsDirectory() && MatchExtension(finder.GetFileName()) )
               {
               bOne=true;
               //ДАЛЕЕ ИЗМЕНЯЮ
               CListF* lf;
               coun = coun +1;
               lf->InsertItem(coun, fullpath+finder.GetFileName());
               //AddItem (fullpath+finder.GetFileName(), parent );
               }
           }

  }
   
   if (!bOne) InsertItem( "",parent);
}

Говорит - Unhandled exception in PC_Browser.exe
--------------------
Вот такая у меня привычка, браться за задание, о выполнение которого я изначально не имею никакого представления.
PM MAIL ICQ   Вверх
Goldberg
Дата 6.7.2004, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 3.6.2004

Репутация: нет
Всего: нет



И еще вопросик. Имеется окно, на нем кнопка, нужно чтобы при нажатии на нее появилось другое окно(НЕ MessageBox!).
--------------------
Вот такая у меня привычка, браться за задание, о выполнение которого я изначально не имею никакого представления.
PM MAIL ICQ   Вверх
mr.DUDA
Дата 6.7.2004, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



Цитата
//ДАЛЕЕ ИЗМЕНЯЮ
CListF* lf;
coun = coun +1;
lf->InsertItem(coun, fullpath+finder.GetFileName());

Обращение по непроинициализированному ничем указателю...
Добавлено @ 23:53
Цитата
И еще вопросик. Имеется окно, на нем кнопка, нужно чтобы при нажатии на нее появилось другое окно(НЕ MessageBox!)

Делаем так:
1) меню Insert->New Form, выбираем имя для класса диалога
2) собираем диалог в открывшемся окне
3) подключаем исходник с диалогом к своему исходнику (откуда нужно показать новое окно)
4) пишем что-то вроде:
Цитата
    // ...

   
CSomeDlg dlg;
   
dlg.DoModal();

   
// ...



--------------------
user posted image
PM MAIL WWW   Вверх
Goldberg
Дата 7.7.2004, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 3.6.2004

Репутация: нет
Всего: нет



1) Ну так в том и вопрос, что требуется сделать? Как его инициализировать??? notify.gif
2) Нет, это не подходит, я узнал, что то что мне нужно называется немодальным окном, вот его и надо делать. cool.gif
--------------------
Вот такая у меня привычка, браться за задание, о выполнение которого я изначально не имею никакого представления.
PM MAIL ICQ   Вверх
Goldberg
Дата 7.7.2004, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 3.6.2004

Репутация: нет
Всего: нет



Все! По второму вопросу разобрался! Первый остается открытым.smile.gif
--------------------
Вот такая у меня привычка, браться за задание, о выполнение которого я изначально не имею никакого представления.
PM MAIL ICQ   Вверх
Nimbus
Дата 8.7.2004, 09:10 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











По первому вопросу:
наверное, так rolleyes.gif -
Код
lf = new CListF;

  Вверх
Олег М
Дата 8.7.2004, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 436
Регистрация: 10.6.2004
Где: Москва

Репутация: 7
Всего: 7



А что это за CListF такой? Что он делает?
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0552 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.