WZDDRDLG.CPP
上传用户:sanxfzhen
上传日期:2014-12-28
资源大小:2324k
文件大小:1k
源码类别:

多国语言处理

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. #include "WzdDrDlg.h"
  3. #include "Shlobj.h"
  4. CString CWzdDirDlg::m_sRootDir;
  5. //////////////////////////////////////////////////////////////////////
  6. // Construction/Destruction
  7. //////////////////////////////////////////////////////////////////////
  8. CWzdDirDlg::CWzdDirDlg()
  9. {
  10. }
  11. CWzdDirDlg::~CWzdDirDlg()
  12. {
  13. }
  14. CString CWzdDirDlg::GetDirectory(CWnd *pParent,LPCSTR lpszRoot,LPCSTR lpszTitle)
  15. {
  16. CString str;
  17. BROWSEINFO bi;
  18.     bi.hwndOwner=pParent->m_hWnd;
  19.     bi.pidlRoot=0;
  20.     bi.pszDisplayName=0;
  21.     bi.lpszTitle=lpszTitle;
  22. bi.lpfn = BrowseCallbackProc;
  23.     bi.lParam=0;
  24.     bi.ulFlags=
  25. BIF_RETURNONLYFSDIRS |
  26. BIF_STATUSTEXT |
  27. 0; 
  28. m_sRootDir=lpszRoot;
  29. LPITEMIDLIST lpItemId=::SHBrowseForFolder(&bi); 
  30. if (lpItemId)
  31. {
  32. LPTSTR szBuf=str.GetBuffer(MAX_PATH);
  33. ::SHGetPathFromIDList(lpItemId, szBuf);
  34. ::GlobalFree(lpItemId);
  35. str.ReleaseBuffer();
  36. }
  37. return str;
  38. }
  39. int CALLBACK BrowseCallbackProc(HWND hwnd,UINT msg,LPARAM lp, LPARAM pData)
  40. {
  41. TCHAR buf[MAX_PATH];
  42. switch(msg) 
  43. {
  44. case BFFM_INITIALIZED: 
  45. strcpy(buf,CWzdDirDlg::m_sRootDir);
  46. ::SendMessage(hwnd,BFFM_SETSELECTION,TRUE,(LPARAM)buf);
  47. break;
  48. case BFFM_SELCHANGED:
  49. if (::SHGetPathFromIDList((LPITEMIDLIST) lp ,buf)) 
  50. SendMessage(hwnd,BFFM_SETSTATUSTEXT,0,(LPARAM)buf);
  51. break;
  52. }
  53. return 0;
  54. }