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

📄 pidlmgr.h

📁 Windows资源浏览器外壳扩展右键菜单功能的实例程序
💻 H
字号:
/**************************************************************************
   THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
   ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
   THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
   PARTICULAR PURPOSE.

   Copyright 1997 Microsoft Corporation.  All Rights Reserved.
**************************************************************************/

/**************************************************************************

   File:          PidlMgr.h
   
   Description:   CPidlMgr definitions.

**************************************************************************/

#ifndef PIDLMGR_H
#define PIDLMGR_H

#include <windows.h>
#include <shlobj.h>

/**************************************************************************
   data types
**************************************************************************/

typedef enum tagPIDLTYPE
   {
   PT_ROOTKEY = 0x00000000,
   PT_SUBKEY = 0x00000001,
   PT_VALUE = 0x00000002,
   PT_TEXT = PT_SUBKEY | PT_VALUE
   }PIDLTYPE;

typedef struct tagPIDLDATA
   {
   PIDLTYPE type;
   union{
      HKEY     hRootKey;
      TCHAR    szText[1];
      };
   }PIDLDATA, FAR *LPPIDLDATA;

/**************************************************************************
   global variables
**************************************************************************/


extern UINT       g_DllRefCount;

/**************************************************************************

   CPidlMgr class definition

**************************************************************************/

class CPidlMgr
{
public:
   CPidlMgr();
   ~CPidlMgr();
   LPITEMIDLIST CreateRootKey(HKEY);
   LPITEMIDLIST CreateSubKey(LPCTSTR);
   LPITEMIDLIST CreateValue(LPCTSTR);
   void Delete(LPITEMIDLIST);
   LPITEMIDLIST GetNextItem(LPCITEMIDLIST);
   LPITEMIDLIST Copy(LPCITEMIDLIST);
   UINT GetSize(LPCITEMIDLIST);
   BOOL GetRootKey(LPCITEMIDLIST, HKEY*);
   LPITEMIDLIST GetLastItem(LPCITEMIDLIST);
   DWORD GetItemText(LPCITEMIDLIST, LPTSTR, USHORT);
   BOOL IsRootKey(LPCITEMIDLIST);
   BOOL IsSubKey(LPCITEMIDLIST);
   BOOL IsValue(LPCITEMIDLIST);
   BOOL HasSubKeys(HKEY, LPCTSTR, LPCITEMIDLIST);
   DWORD GetSubKeyText(LPCITEMIDLIST, LPTSTR, DWORD);
   DWORD GetValueText(LPCITEMIDLIST, LPTSTR, DWORD);
   
   BOOL GetValueType(LPCITEMIDLIST, LPDWORD);
   BOOL GetValueType(LPCITEMIDLIST, LPCITEMIDLIST, LPDWORD);
   
   DWORD GetDataText(LPCITEMIDLIST, LPTSTR, DWORD);
   DWORD GetDataText(LPCITEMIDLIST, LPCITEMIDLIST, LPTSTR, DWORD);
   
   DWORD GetPidlPath(LPCITEMIDLIST, LPTSTR, DWORD);
   LPITEMIDLIST Concatenate(LPCITEMIDLIST, LPCITEMIDLIST);
   
private:
   LPMALLOC m_pMalloc;

   LPITEMIDLIST Create(PIDLTYPE, LPVOID, USHORT);
   DWORD GetData(PIDLTYPE, LPCITEMIDLIST, LPVOID, USHORT);
   LPPIDLDATA GetDataPointer(LPCITEMIDLIST);
   BOOL SeparateKeyAndValue(LPCITEMIDLIST, LPITEMIDLIST*, LPITEMIDLIST*);
};

typedef CPidlMgr FAR *LPPIDLMGR;

#endif   //PIDLMGR_H

⌨️ 快捷键说明

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