home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / winui / shell / regview / pidlmgr.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-08-27  |  3.1 KB  |  101 lines

  1. /**************************************************************************
  2.    THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  3.    ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  4.    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  5.    PARTICULAR PURPOSE.
  6.  
  7.    Copyright 1997 Microsoft Corporation.  All Rights Reserved.
  8. **************************************************************************/
  9.  
  10. /**************************************************************************
  11.  
  12.    File:          PidlMgr.h
  13.    
  14.    Description:   CPidlMgr definitions.
  15.  
  16. **************************************************************************/
  17.  
  18. #ifndef PIDLMGR_H
  19. #define PIDLMGR_H
  20.  
  21. #include <windows.h>
  22. #include <shlobj.h>
  23.  
  24. /**************************************************************************
  25.    data types
  26. **************************************************************************/
  27.  
  28. typedef enum tagPIDLTYPE
  29.    {
  30.    PT_ROOTKEY = 0x00000000,
  31.    PT_SUBKEY = 0x00000001,
  32.    PT_VALUE = 0x00000002,
  33.    PT_TEXT = PT_SUBKEY | PT_VALUE
  34.    }PIDLTYPE;
  35.  
  36. typedef struct tagPIDLDATA
  37.    {
  38.    PIDLTYPE type;
  39.    union{
  40.       HKEY     hRootKey;
  41.       TCHAR    szText[1];
  42.       };
  43.    }PIDLDATA, FAR *LPPIDLDATA;
  44.  
  45. /**************************************************************************
  46.    global variables
  47. **************************************************************************/
  48.  
  49. extern HINSTANCE  g_hInst;
  50. extern UINT       g_DllRefCount;
  51.  
  52. /**************************************************************************
  53.  
  54.    CPidlMgr class definition
  55.  
  56. **************************************************************************/
  57.  
  58. class CPidlMgr
  59. {
  60. public:
  61.    CPidlMgr();
  62.    ~CPidlMgr();
  63.    LPITEMIDLIST CreateRootKey(HKEY);
  64.    LPITEMIDLIST CreateSubKey(LPCTSTR);
  65.    LPITEMIDLIST CreateValue(LPCTSTR);
  66.    void Delete(LPITEMIDLIST);
  67.    LPITEMIDLIST GetNextItem(LPCITEMIDLIST);
  68.    LPITEMIDLIST Copy(LPCITEMIDLIST);
  69.    UINT GetSize(LPCITEMIDLIST);
  70.    BOOL GetRootKey(LPCITEMIDLIST, HKEY*);
  71.    LPITEMIDLIST GetLastItem(LPCITEMIDLIST);
  72.    DWORD GetItemText(LPCITEMIDLIST, LPTSTR, USHORT);
  73.    BOOL IsRootKey(LPCITEMIDLIST);
  74.    BOOL IsSubKey(LPCITEMIDLIST);
  75.    BOOL IsValue(LPCITEMIDLIST);
  76.    BOOL HasSubKeys(HKEY, LPCTSTR, LPCITEMIDLIST);
  77.    DWORD GetSubKeyText(LPCITEMIDLIST, LPTSTR, DWORD);
  78.    DWORD GetValueText(LPCITEMIDLIST, LPTSTR, DWORD);
  79.    
  80.    BOOL GetValueType(LPCITEMIDLIST, LPDWORD);
  81.    BOOL GetValueType(LPCITEMIDLIST, LPCITEMIDLIST, LPDWORD);
  82.    
  83.    DWORD GetDataText(LPCITEMIDLIST, LPTSTR, DWORD);
  84.    DWORD GetDataText(LPCITEMIDLIST, LPCITEMIDLIST, LPTSTR, DWORD);
  85.    
  86.    DWORD GetPidlPath(LPCITEMIDLIST, LPTSTR, DWORD);
  87.    LPITEMIDLIST Concatenate(LPCITEMIDLIST, LPCITEMIDLIST);
  88.    
  89. private:
  90.    LPMALLOC m_pMalloc;
  91.  
  92.    LPITEMIDLIST Create(PIDLTYPE, LPVOID, USHORT);
  93.    DWORD GetData(PIDLTYPE, LPCITEMIDLIST, LPVOID, USHORT);
  94.    LPPIDLDATA GetDataPointer(LPCITEMIDLIST);
  95.    BOOL SeparateKeyAndValue(LPCITEMIDLIST, LPITEMIDLIST*, LPITEMIDLIST*);
  96. };
  97.  
  98. typedef CPidlMgr FAR *LPPIDLMGR;
  99.  
  100. #endif   //PIDLMGR_H
  101.