tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

Shell.h (2517B)


      1 // Windows/Shell.h
      2 
      3 #ifndef __WINDOWS_SHELL_H
      4 #define __WINDOWS_SHELL_H
      5 
      6 #include <windows.h>
      7 #include <shlobj.h>
      8 
      9 #include "../Common/MyString.h"
     10 
     11 #include "Defs.h"
     12 
     13 namespace NWindows{
     14 namespace NShell{
     15 
     16 /////////////////////////
     17 // CItemIDList
     18 #ifndef UNDER_CE
     19 
     20 class CItemIDList
     21 {
     22  LPITEMIDLIST m_Object;
     23 public:
     24  CItemIDList(): m_Object(NULL) {}
     25  // CItemIDList(LPCITEMIDLIST itemIDList);
     26  // CItemIDList(const CItemIDList& itemIDList);
     27  ~CItemIDList() { Free(); }
     28  void Free();
     29  void Attach(LPITEMIDLIST object)
     30  {
     31    Free();
     32    m_Object = object;
     33  }
     34  LPITEMIDLIST Detach()
     35  {
     36    LPITEMIDLIST object = m_Object;
     37    m_Object = NULL;
     38    return object;
     39  }
     40  operator LPITEMIDLIST() { return m_Object;}
     41  operator LPCITEMIDLIST() const { return m_Object;}
     42  LPITEMIDLIST* operator&() { return &m_Object; }
     43  LPITEMIDLIST operator->() { return m_Object; }
     44 
     45  // CItemIDList& operator=(LPCITEMIDLIST object);
     46  // CItemIDList& operator=(const CItemIDList &object);
     47 };
     48 
     49 /////////////////////////////
     50 // CDrop
     51 
     52 class CDrop
     53 {
     54  HDROP m_Object;
     55  bool m_MustBeFinished;
     56  bool m_Assigned;
     57  void Free();
     58 public:
     59  CDrop(bool mustBeFinished) : m_MustBeFinished(mustBeFinished), m_Assigned(false) {}
     60  ~CDrop() { Free(); }
     61 
     62  void Attach(HDROP object);
     63  operator HDROP() { return m_Object;}
     64  bool QueryPoint(LPPOINT point)
     65    { return BOOLToBool(::DragQueryPoint(m_Object, point)); }
     66  void Finish() {  ::DragFinish(m_Object); }
     67  UINT QueryFile(UINT fileIndex, LPTSTR fileName, UINT fileNameSize)
     68    { return ::DragQueryFile(m_Object, fileIndex, fileName, fileNameSize); }
     69  #ifndef _UNICODE
     70  UINT QueryFile(UINT fileIndex, LPWSTR fileName, UINT fileNameSize)
     71    { return ::DragQueryFileW(m_Object, fileIndex, fileName, fileNameSize); }
     72  #endif
     73  UINT QueryCountOfFiles();
     74  UString QueryFileName(UINT fileIndex);
     75  void QueryFileNames(UStringVector &fileNames);
     76 };
     77 
     78 #endif
     79 
     80 /////////////////////////////
     81 // Functions
     82 
     83 bool GetPathFromIDList(LPCITEMIDLIST itemIDList, CSysString &path);
     84 bool BrowseForFolder(LPBROWSEINFO lpbi, CSysString &resultPath);
     85 bool BrowseForFolder(HWND owner, LPCTSTR title, LPCTSTR initialFolder, CSysString &resultPath);
     86 
     87 #ifndef _UNICODE
     88 bool GetPathFromIDList(LPCITEMIDLIST itemIDList, UString &path);
     89 bool BrowseForFolder(LPBROWSEINFO lpbi, UString &resultPath);
     90 bool BrowseForFolder(HWND owner, LPCWSTR title, LPCWSTR initialFolder, UString &resultPath);
     91 #endif
     92 }}
     93 
     94 #endif