powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Выбор каталога WinApi
5 сообщений из 5, страница 1 из 1
Выбор каталога WinApi
    #34952612
pszMyNick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопросик конечно, так се, но чегото ничего не нашёл в нете... Вообщем есть апишная функция GetOpenFileName которая открывает диалоговое окно выбора файла, так вот, а есть ли функция которая позволяет выбирать не файл а просто папку?
...
Рейтинг: 0 / 0
Выбор каталога WinApi
    #34952700
Ой Вэй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SHBrowseForFolder
...
Рейтинг: 0 / 0
Выбор каталога WinApi
    #34952844
pszMyNick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой ВэйSHBrowseForFolder

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

(а оперативно потому что читаю по RSS, хи-хи)
...
Рейтинг: 0 / 0
Выбор каталога WinApi
    #34952925
Фотография sashka304
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вот так ее можно заюзать:
Код: 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
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Выбор каталога WinApi
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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