亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? shfileinfo.cpp

?? CAN__組建現場總線系統設計技術(光盤)
?? CPP
字號:

#include "stdafx.h"
#include "shfileinfo.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

////////////////////////////////////////////////////////////////////////////////
// CSHFileInfo

CSHFileInfo::CSHFileInfo (LPCTSTR lpszFileName)
{
  m_strFileName = lpszFileName;
  _tsplitpath (m_strFileName, m_szDrive, m_szDir, m_szFname, m_szExt);
}

CSHFileInfo::CSHFileInfo (CFileFind * pFoundFile)
{
  m_pFoundFile = pFoundFile;
  m_strFileName = m_pFoundFile->GetFilePath ();
  _tsplitpath (m_strFileName, m_szDrive, m_szDir, m_szFname, m_szExt);
}

CSHFileInfo:: ~ CSHFileInfo ()
{
  // TODO: add destruction code here.
}

///////////////////////////////////////////////////////////////////
//  Function:   GetFileName()
//  Purpose:    Retrieves current filename minus the path
//  Remarks:    if the filename is "c:\incoming\hello.txt", this
//              function returns "hello.txt".
///////////////////////////////////////////////////////////////////
CString CSHFileInfo::
GetFileName ()
{
  CString str;
  str.Format (_T ("%s%s"), m_szFname, m_szExt);
  return str;
}

///////////////////////////////////////////////////////////////////
//  Function:   GetRoot()
//  Purpose:    Retrieves the path only of the current filename.
//  Remarks:    if the filename is "c:\incoming\hello.txt", this
//              function returns "c:\incoming\".
///////////////////////////////////////////////////////////////////
CString CSHFileInfo::
GetRoot ()
{
  CString str;
  str.Format (_T ("%s%s"), m_szDrive, m_szDir);
  return str;
}

///////////////////////////////////////////////////////////////////
//  Function:   GetFileTitle()
//  Purpose:    Retrieves the title of the filename excluding
//              the path and extension.
//  Remarks:    if the filename is "c:\incoming\hello.txt", this
//              function returns "hello".
///////////////////////////////////////////////////////////////////
CString CSHFileInfo::
GetFileTitle ()
{
  return m_szFname;
}

///////////////////////////////////////////////////////////////////
//  Function:   GetFileExt()
//  Purpose:    Retrieves the file extension.
//  Remarks:    if the filename is "c:\incoming\hello.txt", this
//              function returns "txt".
///////////////////////////////////////////////////////////////////
CString CSHFileInfo::
GetFileExt ()
{
  return m_szExt;
}

///////////////////////////////////////////////////////////////////
//  Function:   GetDescription()
//  Purpose:    Returns the description of the file
///////////////////////////////////////////////////////////////////
CString CSHFileInfo::
GetDescription ()
{
  SHFILEINFO sfi;

  ::SHGetFileInfo (m_strFileName, 0, &sfi,
                   sizeof (SHFILEINFO), SHGFI_TYPENAME);

  return sfi.szTypeName;
}

///////////////////////////////////////////////////////////////////
//  Function:   Exists()
//  Purpose:    Determines whether a file or directory exists.
///////////////////////////////////////////////////////////////////
bool CSHFileInfo::
Exist ()
{
  WIN32_FIND_DATA fd;

  CString szFindPath = m_strFileName;
  int nSlash = szFindPath.ReverseFind (_T ('\\'));
  int nLength = szFindPath.GetLength ();

  if (nSlash == nLength - 1)
    {
      if (nLength == 3)
        if (szFindPath.GetAt (1) == _T (':'))
          return true;
        else
          szFindPath = szFindPath.Left (nSlash);
    }

  HANDLE hFind = FindFirstFile (szFindPath, &fd);

  if (hFind != INVALID_HANDLE_VALUE)
    FindClose (hFind);

  return hFind != INVALID_HANDLE_VALUE;
}

///////////////////////////////////////////////////////////////////
//  Function:   GetIconIndex()
//  Purpose:    Returns the icon index of the file.
///////////////////////////////////////////////////////////////////
int CSHFileInfo::
GetIconIndex ()
{
  SHFILEINFO sfi;

  ::SHGetFileInfo (m_strFileName, 0, &sfi, sizeof (SHFILEINFO),
                   SHGFI_SYSICONINDEX | SHGFI_SMALLICON);

  return sfi.iIcon;
}

///////////////////////////////////////////////////////////////////
//  Function:   GetDisplayName()
//  Purpose:    Returns the display name for the file.
///////////////////////////////////////////////////////////////////
CString CSHFileInfo::
GetDisplayName ()
{
  SHFILEINFO sfi;

  ::SHGetFileInfo (m_strFileName, 0, &sfi,
                   sizeof (SHFILEINFO), SHGFI_DISPLAYNAME);

  return sfi.szDisplayName;
}

///////////////////////////////////////////////////////////////////
//  Function:   GetLastWriteTime()
//  Purpose:    Returns the last time file was written to.
///////////////////////////////////////////////////////////////////
CString CSHFileInfo::
GetLastWriteTime ()
{
  CString strTime;
  CTime time;
  m_pFoundFile->GetLastWriteTime (time);

  // Format the date time string.
  strTime.Format (_T ("%.2d/%.2d/%d %.2d:%.2d"), time.GetMonth (), time.GetDay (),
                  time.GetYear (), time.GetHour (), time.GetSecond ());

  return strTime;
}

///////////////////////////////////////////////////////////////////
//  Function:   GetFileSize()
//  Purpose:    Returns the comma seperated size of the file.
///////////////////////////////////////////////////////////////////
CString CSHFileInfo::
GetFileSize ()
{
  CString strFileSize;
  CString strTemp;

  strTemp.Format (_T ("%d"), m_pFoundFile->GetLength ());
  int nSize = strTemp.GetLength () - 1;
  int nCount = 1;

  while (nSize >= 0)
    {
      strFileSize += strTemp.GetAt (nSize);

      if (nSize == 0)
        break;
      if (nCount != 3)
        ++nCount;

      else
        {
          strFileSize += _T (",");
          nCount = 1;
        }
      nSize--;
    }

  strFileSize.MakeReverse ();
  return strFileSize;
}

///////////////////////////////////////////////////////////////////
//  Function:   GetSystemImageList()
//  Purpose:    Returns the system image list for small and large icons.
///////////////////////////////////////////////////////////////////
void CSHFileInfo::
GetSystemImageList (CImageList * pSmallList, CImageList * pLargeList)
{
  //image list setup
  SHFILEINFO ssfi, lsfi;

  // Get a handle to the system small icon list
  HIMAGELIST hSystemSmallImageList = (HIMAGELIST)
                                     ::SHGetFileInfo ((LPCTSTR) _T ("C:\\"), 0, &ssfi,
                                                      sizeof (SHFILEINFO), SHGFI_SYSICONINDEX | SHGFI_SMALLICON);

  // Attach it to the small image list
  // DON'T FORGET TO PUT pSmallList->Detach(); in your destructor
  pSmallList->Attach (hSystemSmallImageList);

  // Get a handle to the system large icon list
  HIMAGELIST hSystemLargeImageList = (HIMAGELIST)
                                     ::SHGetFileInfo ((LPCTSTR) _T ("C:\\"), 0, &lsfi,
                                                      sizeof (SHFILEINFO), SHGFI_SYSICONINDEX | SHGFI_ICON);

  // Attach it to the large image list
  // DON'T FORGET TO PUT pLargeList->Detach(); in your destructor
  pLargeList->Attach (hSystemLargeImageList);
}

//////////////////////////////////////////////////////////////////////
// SHBrowseForFolder callback...
//////////////////////////////////////////////////////////////////////
#pragma warning ( disable : 4100 )
static int __stdcall
BrowseCtrlCallback (HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
  CSHFileInfo *pShellFileInfo = (CSHFileInfo *) lpData;

  if (uMsg == BFFM_INITIALIZED && !pShellFileInfo->m_strSelDir.IsEmpty ())
    {
      ::SendMessage (hwnd, BFFM_SETSELECTION, TRUE, (LPARAM) (LPCTSTR) (pShellFileInfo->m_strSelDir));
    }
  else                          // uMsg == BFFM_SELCHANGED

    {
    }

  return FALSE;
}
#pragma warning ( default : 4100 )

///////////////////////////////////////////////////////////////////
//  Function:   BrowseForFolder()
//  Purpose:    Displays browse for folder dialog.
///////////////////////////////////////////////////////////////////
BOOL CSHFileInfo::
BrowseForFolder (CWnd * pParentWnd)
{
  LPMALLOC pMalloc;
  if (::SHGetMalloc (&pMalloc) != NOERROR)
    return FALSE;

  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.
          //
#ifdef _UNICODE
          _tcscpy (olePath, m_strInitDir);
#else // _UNICODE
          MultiByteToWideChar (CP_ACP, MB_PRECOMPOSED, m_strInitDir.GetBuffer (MAX_PATH), -1,
                               olePath, MAX_PATH);
#endif // _UNICODE

          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 FALSE;
            }
          bInfo.pidlRoot = pidl;

        }
    }

  bInfo.hwndOwner = pParentWnd->GetSafeHwnd ();
  bInfo.pszDisplayName = m_strPath.GetBuffer (MAX_PATH);
  bInfo.lpszTitle = (m_strTitle.IsEmpty ())? _T ("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 FALSE;
    }
  m_strPath.ReleaseBuffer ();
  m_iImageIndex = bInfo.iImage;

  if (::SHGetPathFromIDList (pidl, m_strPath.GetBuffer (MAX_PATH)) == FALSE)
    {
      pMalloc->Free (pidl);
      pMalloc->Release ();
      return FALSE;
    }

  m_strPath.ReleaseBuffer ();

  pMalloc->Free (pidl);
  pMalloc->Release ();

  return TRUE;
}

////////////////////////////////////////////////////////////////////////////////

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品自拍| 欧美精品一区二区三区四区 | 欧美综合亚洲图片综合区| 久久精品在线免费观看| 国产精品91一区二区| 久久久久综合网| 成人小视频免费在线观看| 国产精品美女久久久久aⅴ| 在线播放/欧美激情| 夜夜爽夜夜爽精品视频| 欧美日韩色综合| 日本少妇一区二区| 精品国产免费久久| 国产成人高清在线| 亚洲男人的天堂网| 欧美视频一区二| 免费观看一级欧美片| 久久色在线视频| 99久久久久久| 亚洲伊人伊色伊影伊综合网| 欧美一级艳片视频免费观看| 国产在线一区观看| 亚洲天堂免费看| 884aa四虎影成人精品一区| 国产自产v一区二区三区c| 国产精品久久久久久久蜜臀| 欧美亚洲动漫另类| 国产在线视频不卡二| 亚洲视频图片小说| 欧美精品777| 成人性生交大片免费看视频在线 | 久久婷婷色综合| 91丨porny丨户外露出| 日产国产欧美视频一区精品| 欧美高清在线一区二区| 欧美中文字幕亚洲一区二区va在线 | 国产69精品久久久久毛片| 一区二区三区加勒比av| 亚洲精品一区二区三区四区高清| 99热在这里有精品免费| 免费观看日韩av| 亚洲色大成网站www久久九九| 欧美一区二区三区免费在线看| 成人午夜免费av| 麻豆成人综合网| 亚洲欧美一区二区三区久本道91 | 亚洲一区二区三区四区五区中文| 精品国产亚洲在线| 欧美中文字幕一区二区三区| 国产精品中文字幕欧美| 日韩中文欧美在线| 亚洲人成7777| 国产婷婷色一区二区三区在线| 欧美日韩精品福利| 91最新地址在线播放| 国产在线视频不卡二| 亚洲成av人片在线观看无码| 国产精品久久久久久久久免费相片 | 天天av天天翘天天综合网| 欧美激情在线免费观看| 91精品国产高清一区二区三区蜜臀 | 欧美在线一二三四区| 狠狠久久亚洲欧美| 天堂午夜影视日韩欧美一区二区| 国产精品私人影院| 久久这里只有精品6| 91精品国产色综合久久久蜜香臀| 色悠悠亚洲一区二区| www.66久久| 国产大陆a不卡| 久久黄色级2电影| 午夜电影一区二区三区| 亚洲一二三四久久| 樱桃视频在线观看一区| 亚洲视频在线一区观看| 久久久久久久久久久黄色| 精品国内片67194| 日韩欧美精品在线| 日韩三级精品电影久久久| 欧美日韩电影在线播放| 欧美日韩亚洲综合在线| 欧美三级日本三级少妇99| 在线亚洲欧美专区二区| 日本乱人伦aⅴ精品| 色狠狠桃花综合| 在线亚洲高清视频| 欧美三片在线视频观看| 欧美色图12p| 欧美女孩性生活视频| 欧美一区二区三区小说| 日韩一级免费一区| 欧美电影免费观看高清完整版在线 | 国产成人免费视频一区| 成人深夜在线观看| 99久久伊人久久99| 色婷婷狠狠综合| 欧美色图12p| 日韩精品一区二区在线| 亚洲国产美国国产综合一区二区| 石原莉奈在线亚洲二区| 视频一区国产视频| 手机精品视频在线观看| 亚洲色图在线看| 国产精品美女久久久久久久久 | 亚洲欧美偷拍卡通变态| 亚洲精品中文在线| 亚洲蜜臀av乱码久久精品| 欧美精品乱码久久久久久| 看电影不卡的网站| 国产精品国产三级国产普通话99| 一本色道亚洲精品aⅴ| 日本欧美加勒比视频| 久久精品亚洲精品国产欧美| 在线区一区二视频| 精品一二线国产| 亚洲人成网站色在线观看| 91精品国产综合久久精品app| 国产精品一二二区| 亚洲一区二区三区中文字幕在线| 欧美变态tickling挠脚心| 91丨九色丨蝌蚪丨老版| 久久精品国产精品亚洲红杏 | 成人黄色网址在线观看| 午夜伊人狠狠久久| 国产喂奶挤奶一区二区三区| 6080午夜不卡| 99久久免费视频.com| 激情深爱一区二区| 亚洲资源在线观看| 欧美国产日韩一二三区| 日韩欧美国产三级电影视频| 色综合久久久久久久久久久| 国内国产精品久久| 亚洲国产日韩综合久久精品| 国产精品无圣光一区二区| 日韩欧美亚洲国产另类| 91黄色免费版| 99久久久精品| 国产精品66部| 免费在线看一区| 亚洲国产一二三| 一区二区三区四区乱视频| 国产欧美综合在线观看第十页 | 26uuu精品一区二区在线观看| 欧美亚洲国产一区在线观看网站| 粉嫩久久99精品久久久久久夜| 麻豆精品一区二区av白丝在线| 夜色激情一区二区| 日本视频中文字幕一区二区三区| 国产精品久久久久一区二区三区共| 日韩欧美国产一二三区| 欧美一区二区视频网站| 欧美日韩综合在线免费观看| 色综合久久久久综合99| 94色蜜桃网一区二区三区| 成人午夜免费av| 成人黄页在线观看| 大陆成人av片| 国产成人av网站| 国产凹凸在线观看一区二区| 极品少妇xxxx偷拍精品少妇| 青青草97国产精品免费观看 | 91精品国产综合久久精品app| 欧美日韩国产另类一区| 欧美日韩在线播放一区| 欧美视频精品在线| 欧美天天综合网| 欧美日韩国产免费| 欧美一区二区免费视频| 91精品久久久久久久91蜜桃| 51精品国自产在线| 日韩视频一区二区三区| 欧美成人激情免费网| 久久中文娱乐网| 国产精品国产三级国产aⅴ中文 | 亚洲一区二区四区蜜桃| 亚洲国产色一区| 美日韩一级片在线观看| 国产在线精品一区二区夜色| 国产精品中文字幕欧美| www.爱久久.com| 欧美视频精品在线观看| 日韩美一区二区三区| 久久久国产综合精品女国产盗摄| 国产三级欧美三级日产三级99| 亚洲国产成人自拍| 一区二区三区蜜桃| 蜜臀av一区二区在线观看 | 国产69精品一区二区亚洲孕妇| 9l国产精品久久久久麻豆| 欧美性极品少妇| 久久亚洲春色中文字幕久久久| 1024成人网| 免费成人在线视频观看| 99re热这里只有精品视频| 日韩一区二区三区av| 国产精品国产三级国产a| 五月天激情综合网| 国产99久久久久久免费看农村| 欧美综合亚洲图片综合区|