Posted By: oliver2s
Select Folder Dialog - 01/16/14 12:53
This functions opens a Windows Dialog in which you can select a folder and get the full path as string.
For more info:
http://msdn.microsoft.com/en-us/library/windows/desktop/bb773205(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/bb762115(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/bb762194(v=vs.85).aspx
How to use:
For more info:
http://msdn.microsoft.com/en-us/library/windows/desktop/bb773205(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/bb762115(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/bb762194(v=vs.85).aspx
Code:
typedef struct _BROWSEINFO { long hwndOwner; char* pidlRoot; char* pszDisplayName; char* lpszTitle; long ulFlags; long lpfn; long lParam; int iImage; }BROWSEINFO; DWORD WINAPI SHBrowseForFolder(DWORD); DWORD WINAPI SHGetPathFromIDList(long,long); API(SHBrowseForFolder,shell32) API(SHGetPathFromIDList,shell32) #define PRAGMA_API SHBrowseForFolder;shell32!SHBrowseForFolderA #define PRAGMA_API SHGetPathFromIDList;shell32!SHGetPathFromIDListA #define BIF_RETURNONLYFSDIRS 0x00000001 #define BIF_DONTGOBELOWDOMAIN 0x00000002 #define BIF_STATUSTEXT 0x00000004 #define BIF_RETURNFSANCESTORS 0x00000008 #define BIF_EDITBOX 0x00000010 #define BIF_VALIDATE 0x00000020 #define BIF_NEWDIALOGSTYLE 0x00000040 #define BIF_BROWSEINCLUDEURLS 0x00000080 #define BIF_UAHINT 0x00000100 #define BIF_NONEWFOLDERBUTTON 0x00000200 #define BIF_NOTRANSLATETARGETS 0x00000400 #define BIF_BROWSEFORCOMPUTER 0x00001000 #define BIF_BROWSEFORPRINTER 0x00002000 #define BIF_BROWSEINCLUDEFILES 0x00004000 #define BIF_SHAREABLE 0x00008000 #define BIF_BROWSEFILEJUNCTIONS 0x00010000 function folder_dialog(STRING* dir) { STRING* DirName = str_create("#255"); *DirName.chars=0; BROWSEINFO FOdlg; memset(FOdlg, 0, sizeof(BROWSEINFO)); FOdlg.pszDisplayName = DirName.chars; FOdlg.ulFlags = NULL; long lpItem = SHBrowseForFolder(&FOdlg); if(lpItem==0) { str_remove(DirName); return(0); } else { SHGetPathFromIDList(lpItem, DirName.chars); str_cpy(dir, DirName); str_remove(DirName); return(1); } }
How to use:
Code:
STRING* str_folder=""; folder_dialog(str_folder);