⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dirdialog.cpp

📁 MPICH是MPI的重要研究,提供了一系列的接口函数,为并行计算的实现提供了编程环境.
💻 CPP
字号:
///////////////////////////////////////////////////////////////////////////// DirDialog.cpp: implementation of the CDirDialog class.////////////////////////////////////////////////////////////////////////#include "stdafx.h"#include "DirDialog.h"#include "shlobj.h"#ifdef _DEBUG#undef THIS_FILEstatic char THIS_FILE[]=__FILE__;#define new DEBUG_NEW#endif// Callback function called by SHBrowseForFolder's browse control// after initialization and when selection changesstatic int __stdcall BrowseCtrlCallback(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData){  CDirDialog* pDirDialogObj = (CDirDialog*)lpData;  if (uMsg == BFFM_INITIALIZED && !pDirDialogObj->m_strSelDir.IsEmpty())  {    ::SendMessage(hwnd, BFFM_SETSELECTION, TRUE, (LPARAM)(LPCTSTR)(pDirDialogObj->m_strSelDir));  }  else // uMsg == BFFM_SELCHANGED  {  }  return 0;}//////////////////////////////////////////////////////////////////////// Construction/Destruction//////////////////////////////////////////////////////////////////////CDirDialog::CDirDialog(){}CDirDialog::~CDirDialog(){}int CDirDialog::DoBrowse(){  LPMALLOC pMalloc;  if (SHGetMalloc (&pMalloc)!= NOERROR)  {      return 0;  }  BROWSEINFO bInfo;  LPITEMIDLIST pidl;  ZeroMemory ( (PVOID) &bInfo,sizeof (BROWSEINFO));  if (!m_strInitDir.IsEmpty ())  {    OLECHAR       olePath[MAX_PATH];    ULONG         chEaten;    ULONG         dwAttributes;    HRESULT       hr;    LPSHELLFOLDER pDesktopFolder;    //     // Get a pointer to the Desktop's IShellFolder interface.     //    if (SUCCEEDED(SHGetDesktopFolder(&pDesktopFolder)))    {      //      // IShellFolder::ParseDisplayName requires the file name be in Unicode.      //      MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, m_strInitDir.GetBuffer(MAX_PATH), -1,                          olePath, MAX_PATH);      m_strInitDir.ReleaseBuffer (-1);      //      // Convert the path to an ITEMIDLIST.      //      hr = pDesktopFolder->ParseDisplayName(NULL,                                            NULL,                                            olePath,                                            &chEaten,                                            &pidl,                                            &dwAttributes);      if (FAILED(hr))      {        pMalloc ->Free (pidl);        pMalloc ->Release ();        return 0;      }      bInfo.pidlRoot = pidl;    }  }  bInfo.hwndOwner = NULL;  bInfo.pszDisplayName = m_strPath.GetBuffer (MAX_PATH);  bInfo.lpszTitle = (m_strTitle.IsEmpty()) ? "Open":m_strTitle;  bInfo.ulFlags = BIF_RETURNFSANCESTORS|BIF_RETURNONLYFSDIRS;  bInfo.lpfn = BrowseCtrlCallback;  // address of callback function  bInfo.lParam = (LPARAM)this;      // pass address of object to callback function  if ((pidl = ::SHBrowseForFolder(&bInfo)) == NULL)  {    return 0;  }  m_strPath.ReleaseBuffer();  m_iImageIndex = bInfo.iImage;  if (::SHGetPathFromIDList(pidl,m_strPath.GetBuffer(MAX_PATH)) == FALSE)  {    pMalloc ->Free(pidl);    pMalloc ->Release();    return 0;  }  m_strPath.ReleaseBuffer();  pMalloc ->Free(pidl);  pMalloc ->Release();  return 1;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -