Функция ac_request с директивой dialog_get_filename вызывает диалог выбора файла.

Формат обращения:

int iret = ac_request("dialog_get_filename",string Title, string Filter, string sStartFolder, string for_what, string &FileNameAndPath);


Здесь: Title - заголовок окна, Filter - строка фильтра для выбора файла, sStartFolder - начальный путь где выбирать файл.

Полный путь к выбранному файлу возвращается в переменную FileNameAndPath.

for_what - текстовая переменная, задающая характер обращения к диалогу "OpenFile" или "Save".

Если iret будет -1 - это означает, что пользователь отказался от выбора.

Пример.

Выбрать программный файл с расширением .cpp. Искать сначала в корневом каталоге диска C:. Дополнительно - запустить этот выбранный программный файл на выполнение.


string sFileNameAndPath;
string sStartFolder = "c:\\";
int iret = ac_request("dialog_get_filename", "Выберите файл для запуска", "cpp", sStartFolder, "OpenFile", sFileNameAndPath);
if (iret == -1)
{
    cout << "Пользователь отказался от выбора файла\n";
    return -1;
}
run_cpp("run_from_file", sFileNameAndPath);
cout << "Файл выбран и выполнен";



Можно составлять сложные фильтры и группы фильтров по расширениям файлов.


Пример.

Предоставить пользователю выбрать файл из трех вариантов выборки.

вариант1 - Excel с расширениями xls,xslx, xslm;

вариант2 - Archicad с расширениями pln, pla, tpl;

вариант3 - Text с расширениями txt, sx.

Стартовый каталог - текущий;


string FileNameAndPath;
ac_request("dialog_get_filename", "Выберите файл", "Excel,xls,xlsx,xlsm|Archicad,pln,pla,tpl|Text,txt,sx", "", "OpenFile", FileNameAndPath); 
coutvar << FileNameAndPath;