用 SHBrowseForFolder(&bi) 选择目录的方法(诚邀Wingsun,binbin回答)
wdf1 2000-08-03 08:31:00
我在已回答的问题见到如下答案,但有两问题不明,特请教:
原答案:
你需要写一个回调函数。如:
BROWSEINFO bi;
char path[MAX_PATH]={"Temp"};
bi.hwndOwner =Handle;
bi.lpszTitle ="请选择一个目录,该目录是你将要保存数据文件的目录。";
bi.pszDisplayName =path;
bi.ulFlags =BIF_RETURNONLYFSDIRS;//BIF_BROWSEFORCOMPUTER ;
bi.lpfn =BrowseCallbackProc;
bi.pidlRoot =NULL;
bi.lParam =124;
if(SHBrowseForFolder(&bi)!=NULL)
{
....
}
int CALLBACK BrowseCallbackProc(HWND hwnd,UINT uMsg,LPARAM lParam,LPARAM lpData)
{
switch(uMsg)
{
case BFFM_SELCHANGED :
char path[256];
SHGetPathFromIDList((LPITEMIDLIST)lParam,path);
m_Path =path;
return 0;
default:
return 0;
}
}
问题:
1.请问在CALLBACK中 m_Path 无定义,编译通不过.
2.去掉 m_Path=path; 通过后 得到的
if(SHBrowseForFolder(&bi)!=NULL)
{
MessageBox(bi.pszDisplayName);
}
显示为单个目录, 我需要整个路径,怎么办.
谢谢 !