Средства диалога выбора файла - C (СИ)

Формулировка задачи:

Есть ли какие-то минимальные средства для реализации диалога выбора файла на С (в консольной программе) другими словами, чтобы не писать стандартное типа
FILE * f;
 f=fopen("dan.txt","r");
а чтобы хотя бы например для данной папки получить например внутри программы весь список файлов скажем с расширением *txt или *.dat И дать возмжность выбора пользователю программы?

Код к задаче: «Средства диалога выбора файла - C (СИ)»

textual
#include <stdlib.h>
#include <shlobj.h>
#include <stdio.h>
 
BOOL SelectFile(char * sPath, const char * szTitle)
{
    BOOL bRet = FALSE;
    LPCITEMIDLIST lpItemDList;
    BROWSEINFO bi = {
        NULL, 
        NULL, 
        sPath,
        szTitle,
        BIF_DONTGOBELOWDOMAIN|BIF_BROWSEINCLUDEFILES,
        NULL,
        NULL,
        0
    };
    if((lpItemDList=SHBrowseForFolder(&bi)))
    {
        if((bRet = SHGetPathFromIDList(lpItemDList, sPath)))
            GetShortPathName((LPCTSTR)sPath,sPath,strlen(sPath));
        else
            sPath[0] = '\0';
    }
    return bRet;
}
 
int main()
{
    char sPath[256] = {0};
    if(!SelectFile(sPath, "Âûáåðèòå ГґГ*éë èëè ГЄГ*ГІГ*ëîã"))
        printf("Error open path %s\n",strerror(GetLastError()));
    else
        printf("Selected path %s\n",sPath);
    system("pause");
    return 0;
}

7   голосов, оценка 4.000 из 5


СОХРАНИТЬ ССЫЛКУ