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

📄 dirdialog.cpp

📁 《Visual C++视频/音频开发实用工程案例精选》一书的源代码
💻 CPP
字号:

#include "DirDialog.h"
#include <shlobj.h>

static int __stdcall BrowseCtrlCallback(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
  CDirDialog* pDirDialogObj = (CDirDialog*)lpData;

  if (uMsg == BFFM_INITIALIZED && !pDirDialogObj->m_strSelDir != NULL)
  {
  
  }
  else 
  {

  }

  return 0;
}


CDirDialog::CDirDialog()
{
	this->m_strPath    = (char *) new char[32768];
    this->m_strInitDir = NULL;
    this->m_strSelDir  = NULL;
    this->m_strTitle   = NULL;
}

CDirDialog::~CDirDialog()
{

}

int CDirDialog::DoBrowse()
{

  BROWSEINFO bInfo;
  LPITEMIDLIST pidl;
  ZeroMemory ( (PVOID) &bInfo,sizeof (BROWSEINFO));

  if (m_strInitDir != NULL)
  {
    OLECHAR       olePath[MAX_PATH];
    ULONG         chEaten;
    ULONG         dwAttributes;
    HRESULT       hr;
    LPSHELLFOLDER pDesktopFolder;


    
	if (SUCCEEDED(SHGetDesktopFolder(&pDesktopFolder)))
    {
 

      MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, m_strInitDir, -1,
                          olePath, MAX_PATH);

 
      hr = pDesktopFolder->ParseDisplayName(NULL,
                                            NULL,
                                            olePath,
                                            &chEaten,
                                            &pidl,
                                            &dwAttributes);
      bInfo.pidlRoot = pidl;

    }
  }
 
  bInfo.hwndOwner      = NULL;
  bInfo.pszDisplayName = m_strPath;
  bInfo.lpszTitle      = "Select Directory";
  bInfo.ulFlags        = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;
  bInfo.lpfn           = BrowseCtrlCallback;
  bInfo.lParam         = (LPARAM)this;

  if ((pidl = SHBrowseForFolder(&bInfo)) == NULL)
  {
	  return 0;
  }

  m_iImageIndex = bInfo.iImage;

  if (SHGetPathFromIDList(pidl, m_strPath) == FALSE)
  {
    return 0;
  }

  return 1;
}

⌨️ 快捷键说明

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