PIDLMGR.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:

Windows编程

开发平台:

Visual C++

  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.    Copyright 1997 Microsoft Corporation.  All Rights Reserved.
  7. **************************************************************************/
  8. /**************************************************************************
  9.    File:          PidlMgr.h
  10.    
  11.    Description:   CPidlMgr definitions.
  12. **************************************************************************/
  13. #ifndef PIDLMGR_H
  14. #define PIDLMGR_H
  15. #include <windows.h>
  16. #include <shlobj.h>
  17. /**************************************************************************
  18.    data types
  19. **************************************************************************/
  20. typedef enum tagPIDLTYPE
  21.    {
  22.    PT_ROOTKEY = 0x00000000,
  23.    PT_SUBKEY = 0x00000001,
  24.    PT_VALUE = 0x00000002,
  25.    PT_TEXT = PT_SUBKEY | PT_VALUE
  26.    }PIDLTYPE;
  27. typedef struct tagPIDLDATA
  28.    {
  29.    PIDLTYPE type;
  30.    union{
  31.       HKEY     hRootKey;
  32.       TCHAR    szText[1];
  33.       };
  34.    }PIDLDATA, FAR *LPPIDLDATA;
  35. /**************************************************************************
  36.    global variables
  37. **************************************************************************/
  38. extern HINSTANCE  g_hInst;
  39. extern UINT       g_DllRefCount;
  40. /**************************************************************************
  41.    CPidlMgr class definition
  42. **************************************************************************/
  43. class CPidlMgr
  44. {
  45. public:
  46.    CPidlMgr();
  47.    ~CPidlMgr();
  48.    LPITEMIDLIST CreateRootKey(HKEY);
  49.    LPITEMIDLIST CreateSubKey(LPCTSTR);
  50.    LPITEMIDLIST CreateValue(LPCTSTR);
  51.    void Delete(LPITEMIDLIST);
  52.    LPITEMIDLIST GetNextItem(LPCITEMIDLIST);
  53.    LPITEMIDLIST Copy(LPCITEMIDLIST);
  54.    UINT GetSize(LPCITEMIDLIST);
  55.    BOOL GetRootKey(LPCITEMIDLIST, HKEY*);
  56.    LPITEMIDLIST GetLastItem(LPCITEMIDLIST);
  57.    DWORD GetItemText(LPCITEMIDLIST, LPTSTR, USHORT);
  58.    BOOL IsRootKey(LPCITEMIDLIST);
  59.    BOOL IsSubKey(LPCITEMIDLIST);
  60.    BOOL IsValue(LPCITEMIDLIST);
  61.    BOOL HasSubKeys(HKEY, LPCTSTR, LPCITEMIDLIST);
  62.    DWORD GetSubKeyText(LPCITEMIDLIST, LPTSTR, DWORD);
  63.    DWORD GetValueText(LPCITEMIDLIST, LPTSTR, DWORD);
  64.    
  65.    BOOL GetValueType(LPCITEMIDLIST, LPDWORD);
  66.    BOOL GetValueType(LPCITEMIDLIST, LPCITEMIDLIST, LPDWORD);
  67.    
  68.    DWORD GetDataText(LPCITEMIDLIST, LPTSTR, DWORD);
  69.    DWORD GetDataText(LPCITEMIDLIST, LPCITEMIDLIST, LPTSTR, DWORD);
  70.    
  71.    DWORD GetPidlPath(LPCITEMIDLIST, LPTSTR, DWORD);
  72.    LPITEMIDLIST Concatenate(LPCITEMIDLIST, LPCITEMIDLIST);
  73.    
  74. private:
  75.    LPMALLOC m_pMalloc;
  76.    LPITEMIDLIST Create(PIDLTYPE, LPVOID, USHORT);
  77.    DWORD GetData(PIDLTYPE, LPCITEMIDLIST, LPVOID, USHORT);
  78.    LPPIDLDATA GetDataPointer(LPCITEMIDLIST);
  79.    BOOL SeparateKeyAndValue(LPCITEMIDLIST, LPITEMIDLIST*, LPITEMIDLIST*);
  80. };
  81. typedef CPidlMgr FAR *LPPIDLMGR;
  82. #endif   //PIDLMGR_H