Структура CIDA (shlobj_core.h)
Используется с форматом буфера обмена CFSTR_SHELLIDLIST для передачи указателя на список идентификаторов элементов (PIDL) одного или нескольких объектов пространства имен оболочки.
Синтаксис
typedef struct _IDA {
UINT cidl;
UINT aoffset[1];
} CIDA, *LPIDA;
Члены
cidl
Тип: UINT
Количество передаваемых PIDL, не включая родительскую папку.
aoffset[1]
Тип: UINT[1]
Массив смещения относительно начала этой структуры. Массив содержит cidl+1 элементов. Первый элемент aoffset содержит смещение к полному идентификатору PIDL родительской папки. Если этот PIDL пуст, родительская папка — это рабочий стол. Каждый из оставшихся элементов массива содержит смещение к одному из передаваемых PIDLs. Все эти PIDL относятся к идентификатору PIDL родительской папки.
Комментарии
Чтобы использовать эту структуру для получения определенного PIDL, добавьте значение aoffset PIDL в адрес структуры. Следующие два макроса можно использовать для получения PIDL из структуры. Первый извлекает PIDL родительской папки. Второй извлекает PIDL, заданный индексом отсчитываемого от нуля.
#define HIDA_GetPIDLFolder(pida) (LPCITEMIDLIST)(((LPBYTE)pida)+(pida)->aoffset[0])
#define HIDA_GetPIDLItem(pida, i) (LPCITEMIDLIST)(((LPBYTE)pida)+(pida)->aoffset[i+1])
Значение, возвращаемое этими макросами, является указателем на структуру ITEMIDLIST . Так как эти структуры различаются по длине, необходимо определить конец структуры путем ее анализа. Дополнительные сведения о PIDLs и структуре ITEMIDLIST см. в разделе Пространство имен.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Верхняя часть | shlobj_core.h (включая Shlobj.h) |