选择文件夹

#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;
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值