Получение элементов CTreeCtrl после закрытия диалогового окна - PullRequest
0 голосов
/ 01 декабря 2011

В приложении требуется обрабатывать только элементы, выбранные в дереве.Я использую MFC CTreeCtrl в листе свойств, добавленном в Dailog.Дерево показывает список папок, пользователь выбирает несколько, и когда пользователь нажимает OK, мне нужно обработать папки.Я сохраняю информацию о папке с помощью SetItemData.Все остальное работает нормально.Проблема в том, что когда пользователь нажимает кнопку ОК, переменная CTreeCtrl становится нулевой, и поэтому я не могу использовать GetItemData.Есть ли способ, которым я все еще использую переменную, даже после того, как ее диалог закрыт?Любая помощь будет высоко оценена.

1 Ответ

1 голос
/ 01 декабря 2011

Вы должны перенести информацию в другую переменную, которая будет существовать, когда окно будет уничтожено.Для списка папок хорошим решением будет std::vector<CString>.

Внутри диалогового окна, когда пользователь нажимает ОК, просмотрите дерево и скопируйте пути к папкам в вектор.

За пределами диалога код выглядит примерно так:

CMyDlg dlg(this);
if(dlg.DoModal() == IDOK)
{
    // Information is in dlg.m_vecFolders available
}
...