Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Можно ли как то изменить данный код...

1.8K
02 июня 2007 года
ViToBrother
149 / / 13.05.2007
CFileDialog BrowseDialog(true, "exe", "Choose Folder",
OFN_FILEMUSTEXIST |
OFN_HIDEREADONLY,
"Program (*.exe)|*.exe||");

BrowseDialog.DoModal();

Можно ли как то изменить данный код чтобы, открывалась не .exe программа а выбраная папка.

Помогите пожалуста.
342
06 июня 2007 года
Yos
209 / / 21.06.2003
Можно... Отказаться от MFC и вместо CFileDialog использовать API

//*************************************************************
//**
//** Обработка диалоговых сообщений выбора пути
//**
//*************************************************************
LRESULT CALLBACK TConfiguration::TConfigurationPathDialogProc(HWND hWnd, UINT uMessage, LPARAM lParam, LPARAM pData)
{
// обрабатываем сообщения
switch( uMessage )
{
// инициализация
case BFFM_INITIALIZED:
// устанавливаем путь
SendMessage(hWnd,BFFM_SETSELECTION,TRUE,pData);
break;
}

return 0;
}

//*************************************************************
//**
//** Получить путь
//**
//*************************************************************
BOOL TConfiguration::GetDir(HWND hWnd, LPSTR pInfo, LPSTR pPath)
{
//****
BROWSEINFO bi;
LPITEMIDLIST pList;

// проверка параметров на корректность
if( !pInfo ) return FALSE;
if( !pPath ) return FALSE;

// заполняем структуру для окна просмотра пути
bi.hwndOwner = hWnd;
bi.pidlRoot = NULL;
bi.pszDisplayName = pPath;
bi.lpszTitle = pInfo;
bi.ulFlags = BIF_RETURNONLYFSDIRS;
bi.lpfn = (BFFCALLBACK)TConfigurationPathDialogProc;
bi.lParam = (LPARAM)pPath;

// вызываем окно просмотра пути
pList = SHBrowseForFolder(&bi);
if( pList )
{
// получаем полный путь
SHGetPathFromIDList(pList,pPath);

// освобождаем ресурсы
CoTaskMemFree(pList);

return TRUE;
}

return FALSE;
}
320
06 июня 2007 года
m_Valery
1.0K / / 08.01.2007
Цитата: ViToBrother
CFileDialog BrowseDialog(true, "exe", "Choose Folder",
OFN_FILEMUSTEXIST |
OFN_HIDEREADONLY,
"Program (*.exe)|*.exe||");

BrowseDialog.DoModal();

Можно ли как то изменить данный код чтобы, открывалась не .exe программа а выбраная папка...


Тебе надо,чтобы показывались все файлы папки ? Тогда так:

 
Код:
...
CFileDialog BrowseDialog(true, "*.*", "Choose Folder",
    OFN_FILEMUSTEXIST |
    OFN_HIDEREADONLY,
    "All Files(*.*)|*.*||");
...

А у тебя стоит только exe-файлы.
274
07 июня 2007 года
Lone Wolf
1.3K / / 26.11.2006
Я понял ему надо диалог выбора папки. Как в винампе например.
342
07 июня 2007 года
Yos
209 / / 21.06.2003
Действительно, если судить по ..."Choose Folder"... И именно это делает приведенный мною ранее код. Все дело в том что в MFC такой "прямой возможности" нет, поэтому пишется небольшой класец (я как раз из своего и выдернул) и в него передается:

HWND hWnd, - родительское окно для диалога
LPSTR pInfo, - информация о том что надо выбрать (текст для статического элемента диалога)
LPSTR pPath - начальный путь (в случае если он отсутствует он покажет Мой компьютер) и сюда же возращается выбранный...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог