// Folder.cpp : フォルダ選択ダイアログ // #include "stdafx.h" #include #include extern "C" int _stdcall BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData); int _stdcall BrowseCallbackProc(HWND hwnd,UINT uMsg,LPARAM lParam,LPARAM lpData) { if (uMsg == BFFM_INITIALIZED) SendMessage(hwnd, BFFM_SETSELECTION, TRUE, lpData); return 0; } // 正常終了なら 0 を返す int FolderDlg(HWND hwnd,const char* title,char* cur /* 初期値 及び 出力 */) { char lpTmp[_MAX_PATH]; BROWSEINFO bi; LPITEMIDLIST pidlPrograms; bi.hwndOwner = hwnd; bi.pidlRoot = 0; bi.pszDisplayName = lpTmp; bi.lpszTitle = title ? title : "Select Folder"; bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS; bi.lpfn = BrowseCallbackProc; bi.lParam = (LPARAM)lpTmp; strcpy(bi.pszDisplayName,cur); return !(pidlPrograms = SHBrowseForFolder(&bi)) || !SHGetPathFromIDList(pidlPrograms,cur); }