|  | 
 
| 网上找了很多设置默认文件夹得方法,但是大多不尽如人意,最后找到了如下代码(自已也改了一些),发现比较合适,给大家分享下。 
 
 
 复制代码int   CALLBACK   BrowserCallbackProc  
  (//回调函数  
HWND   hWnd,  
UINT   uMsg,  
LPARAM   lParam,  
LPARAM   lpData  
  )  
  {  
  switch(uMsg)  
  {  
  case   BFFM_INITIALIZED: //设置默认选择的文件夹  
::SendMessage(hWnd,BFFM_SETSELECTION,1,lpData);  
break;  
  default:  
break;  
  }  
  return   0;  
  }  
//strTitle 为对话框标题 strDir为默认路径调用结束后strDir为选择的路径
bool   SelDirectory(HWND hWnd,LPCTSTR strTitle,CString& strDir)  
  {  
  BROWSEINFO bi;  
  char szDisplayName[MAX_PATH]   =   {0};  
  bi.hwndOwner =   hWnd;  
  bi.pidlRoot =   NULL;  
  bi.pszDisplayName =   szDisplayName;  
  bi.lpszTitle =   strTitle;  
  bi.ulFlags   =   BFFM_SETSELECTION; 
  bi.lpfn =   BrowserCallbackProc;  
  bi.lParam =   (LPARAM)(LPCTSTR)strDir;  
  bi.iImage =   NULL;  
 
  //   显示目录选择对话框,如果按了取消,那么piid为NULL  
  ITEMIDLIST*   piid   =   ::SHBrowseForFolder(&bi);  
  if(piid==NULL)  
  {  
return   false;  
  }   
  //   得到选择的目录  
  BOOL   bValidPath = ::SHGetPathFromIDList(piid,szDisplayName);  
  if   (!bValidPath)  
  {  
return   false;  
  }  
  LPMALLOC   lpMalloc;  
  VERIFY(NOERROR==::SHGetMalloc(&lpMalloc));  
  lpMalloc->Free(piid);  
  lpMalloc->Release();  
  if('/0'==szDisplayName[0])  
  {  
return   false; //用户选择的可能的虚拟文件系统  
  }  
  strDir   =   szDisplayName;  
  strDir.TrimRight("//");  
  return   true;  
  }
 
调用代码:
CString path;
path="D://实用软件//VC6MSDN";
SelDirectory   (GetSafeHwnd(),"设置了默认文件夹哦",path);  
 
 | 
 |