#include <stdio.h>
#include <stdlib.h>
#include <shlobj.h>
/*
Windows API 一日一练
dev-C++
wenwen227@126.com
*/
char* SelectFolder(char* PathName);
int main(int argc, char *argv[])
{
char path[MAX_PATH];
printf(SelectFolder(path));
system("PAUSE");
return 0;
}
/*
选择文件夹对话框
API:
LPITEMIDLIST WINAPI SHBrowseForFolder(PBROWSEINFOA);
typedef struct _browseinfoA {
HWND hwndOwner; //窗口句柄
LPCITEMIDLIST pidlRoot; //
LPSTR pszDisplayName;//文件夹名
LPCSTR lpszTitle; //对话框标题
UINT ulFlags; //文件夹属性
BFFCALLBACK lpfn;
LPARAM lParam;
int iImage;
} BROWSEINFOA,*PBROWSEINFOA,*LPBROWSEINFOA;
*/
char* SelectFolder(char* PathName)
{
BROWSEINFO bi; //控制Browse对话框上属性的结构体
LPITEMIDLIST ItemID; //返回值
char FolderName[MAX_PATH];
memset(&bi, 0, sizeof(BROWSEINFO)); //清零
FolderName[0] = '/0';
PathName[0] = '/0';
bi.hwndOwner = NULL; //父窗口句柄
bi.pszDisplayName = FolderName; //存放路径的缓冲区
bi.lpszTitle = "这里显示lpszTitle的内容"; //对话框标题
bi.ulFlags = BIF_RETURNONLYFSDIRS; //只显示文件系统文件夹
ItemID = SHBrowseForFolder(&bi);
if(ItemID!=NULL)
SHGetPathFromIDList(ItemID, PathName); //得到文件夹路径
return PathName;
}