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


Автор: tonchitos 8.7.2008, 15:52
мне надо на диалоге указать имя файла и его корневой диалог, так же как в студии файл - нью - проект.. там есть поле location: и кнопочка browse...

вот есть может какой класс диалога - который выглядит как тот диалог выбора каталога в студии?

Добавлено через 2 минуты и 44 секунды
мне нужен этот диалог выбора каталога, если путанно объяснила вот скрин
http://radikal.ru/F/i047.radikal.ru/0807/81/2ce92298da5d.jpg.html

Автор: Rapalex 8.7.2008, 15:56
SHBrowseForFolder Function

Автор: voov 8.7.2008, 16:02
Посмотри в мсдн Hierarchy Chart (диаграмму классов) наследников CDialog. Вроде такого нет.

Добавлено через 3 минуты и 24 секунды
Цитата(tonchitos @  8.7.2008,  15:52 Найти цитируемый пост)
мне нужен этот диалог выбора каталога, если путанно объяснила вот скрин

Этот похож на диалог открытия файла, посмотри может его можно привести к такому виду

Автор: tonchitos 8.7.2008, 16:24
SHBrowseForFolder  - удобная штука. Спасибо.

Добавлено через 7 минут и 46 секунд
а вот такой еще вопрос... рядом с кнопочкой брауз находится текстовое поле в которое тоже могут ввести путь...

вот так как мне тогда проверять существует ли такой каталог или нет? то есть верно ли введен путь...

Автор: voov 8.7.2008, 16:40
Цитата(tonchitos @  8.7.2008,  16:24 Найти цитируемый пост)
SHBrowseForFolder  - удобная штука.

Будем знать smile

Автор: dizzy1984 10.7.2008, 05:45
Цитата(tonchitos @  8.7.2008,  18:24 Найти цитируемый пост)
вот так как мне тогда проверять существует ли такой каталог или нет?

Попробуй PathIsDirectory, но для нее надо 
Код

#include <shlwapi.h>
#pragma comment(lib, "shlwapi.lib")

По крайней мере, для VS6

Автор: tonchitos 10.7.2008, 13:26
спасибо большое...
а вот еще такой вопрос, если мне надо получить путь к каталогу с документом, есть ли какая ф-ия (типа GetPthName, но без имени файла) или просто все отрубить от последнего слеша

Автор: T0ohtik 10.7.2008, 13:45
tonchitos, SHBrowseForFolder  принимает в качестве параметра структуру LPBROWSEINFO, одним из полей которой является  переменная pszDisplayName, в которую запишется указатель на строку содержащую путь к выбранной директории.  Если ты это имел в виду.

Автор: tonchitos 10.7.2008, 13:56
я имела ввиду метод CDocumenta, но уже не нужно

Цитата(T0ohtik @  10.7.2008,  13:45 Найти цитируемый пост)
Если ты это имел в виду. 


это...тока я деевочка   smile

Добавлено @ 13:58
вот еще такой вопрос:
у мя есть имя файла (не путь а имя) введенное юзером... Мне надо проверить его правильность (ну типа на допустимость тех или иных символов, как в проводнике если символ запрещенный - то сообщение об ошибке)
есть ли готовая ф-ия?

Добавлено @ 13:59
и еще проверить, существует ли файл с неким полным именем  уже..

Автор: T0ohtik 10.7.2008, 15:04
Цитата(tonchitos @  10.7.2008,  13:56 Найти цитируемый пост)
Добавлено @ 13:58
вот еще такой вопрос:
у мя есть имя файла (не путь а имя) введенное юзером... Мне надо проверить его правильность (ну типа на допустимость тех или иных символов, как в проводнике если символ запрещенный - то сообщение об ошибке)
есть ли готовая ф-ия?

Ты говори конкретней, что ты хочешь сделать. Если ты подразумеваешь, что ты где то ввела имя файла и хочешь проверить правильное оно или нет, то таких функций готовых я не встречал. А если ты имя вводишь в SHBrowseForFolder, то он сам автоматически должен проверить.

Автор: Rrader 10.7.2008, 15:35
Цитата(tonchitos @  10.7.2008,  20:56 Найти цитируемый пост)
и еще проверить, существует ли файл с неким полным именем  уже..


Код

bool FileExists(LPCTSTR FileName)
{
    WIN32_FIND_DATA FD;
    HANDLE H = FindFirstFile(FileName, &FD);
    bool Res = H != INVALID_HANDLE_VALUE;
    FindClose(H);
    return Res;
}

Автор: tonchitos 10.7.2008, 17:56
в общем щас интересует одно...
есть некое имя файла - надо проверить, есть ли в нем недопустимые символы. есть ли готовый метод?

Автор: T0ohtik 10.7.2008, 18:30
Я ж говорю нету. Надо самому реализовывать. К примеру в векторе будут храниться недопустимые символы. В функцию передаешь указатель на имя файла, а далее в цикле попарно сравниваешь, каждый запрещенный символ с каждым символом имени файла, если находишь совпадение, то выходишь из функции с ошибкой.
Код

    bool  checkFileName (char* pchFileName, int sizeOfFileName)
    {
        char WrongSymbol[5] = "/.,=*";
        For(int i = 0; i < sizeOfFileName; i++ )
        {    
            For(int j = 0; j < 5; j++)
            {
                If(pchFileName[i]  ==  WrongSymbol[j])
                    return false;
            }
        }
        return true;
    }


Извиняюсь за ошибки, код не проверял.

Автор: tonchitos 10.7.2008, 18:48
мерси...ну раз нету значит нету )))

Автор: NOT 11.7.2008, 16:13
Не знаю, точно это, что тебе нужно, но посмотри ф-цию PathCleanupSpec

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