Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Выбор каталога WinApi / 5 сообщений из 5, страница 1 из 1
20.11.2007, 16:23:57
    #34952612
pszMyNick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор каталога WinApi
Вопросик конечно, так се, но чегото ничего не нашёл в нете... Вообщем есть апишная функция GetOpenFileName которая открывает диалоговое окно выбора файла, так вот, а есть ли функция которая позволяет выбирать не файл а просто папку?
...
Рейтинг: 0 / 0
20.11.2007, 16:41:10
    #34952700
Ой Вэй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор каталога WinApi
SHBrowseForFolder
...
Рейтинг: 0 / 0
20.11.2007, 17:11:41
    #34952844
pszMyNick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор каталога WinApi
Ой ВэйSHBrowseForFolder

Гы. Пасиб большое очень оперативно =) Сам бы никогда не нашёл... =)
...
Рейтинг: 0 / 0
20.11.2007, 17:24:36
    #34952893
Ой Вэй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор каталога WinApi
Я просто знал ответ :)
А в своё время искал эту функцию долго и безуспешно, не помню даже, сам нашёл или мне подсказали.

(а оперативно потому что читаю по RSS, хи-хи)
...
Рейтинг: 0 / 0
20.11.2007, 17:31:46
    #34952925
sashka304
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор каталога WinApi
а вот так ее можно заюзать:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
#include "BrowseDialog.h"
#include <shlobj.h>
#include <string.h>

int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam,
	LPARAM lpData)
{
   if (uMsg == BFFM_INITIALIZED && lpData)
      PostMessage(hwnd, BFFM_SETSELECTION, TRUE, lpData);

   return  0 ;
}

bool __fastcall BrowseFolder(const char *label, char *&file_name,
   char *prevpath)
{
	LPITEMIDLIST iidl, root;
	BROWSEINFO bi;

   SHGetSpecialFolderLocation(NULL, CSIDL_DRIVES, &root);
   bi.hwndOwner = NULL;
   bi.pidlRoot = root;
   bi.pszDisplayName = NULL;
   bi.lpszTitle = label;
   bi.ulFlags = BIF_NEWDIALOGSTYLE;
   bi.lpfn = BrowseCallbackProc;
   bi.lParam = reinterpret_cast<LPARAM>(prevpath);

   IMalloc *mal;
   SHGetMalloc(&mal);

   iidl = SHBrowseForFolder(&bi);
   mal->Free(root);

   if (!iidl)
   {
      mal->Release();
      return false;
   }

   char f_name[MAX_PATH];
   SHGetPathFromIDList(iidl, f_name);
   file_name = new char[strlen(f_name) +  1 ];
   strcpy(file_name, f_name);

   mal->Free(iidl);
   mal->Release();

   return true;
}
Код: plaintext
1.
2.
3.
4.
5.
6.
#ifndef BrowseDialogH
#define BrowseDialogH

bool __fastcall BrowseFolder(const char *label, char *&file_name,
   char *prevpath =  0 );

#endif
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Выбор каталога WinApi / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]