SHChangeDWORDAsIDList 结构 (shlobj_core.h)
[SHChangeDWORDAsIDList 可用于“要求”部分中指定的操作系统。 它在后续版本中可能已更改或不可用。]
以模拟 ITEMIDLIST 的形式存储两个 DWORD 值,以便 SHChangeNotify 可以使用它们。
语法
typedef struct _SHChangeDWORDAsIDList {
USHORT cb;
DWORD dwItem1;
DWORD dwItem2;
USHORT cbZero;
} SHChangeDWORDAsIDList, *LPSHChangeDWORDAsIDList;
成员
cb
类型: USHORT
结构大小(以字节为单位)。
dwItem1
类型:DWORD
第一个 DWORD 值。
dwItem2
类型:DWORD
第二个 DWORD 值。
cbZero
类型: USHORT
注解
此示例演示如何使用 SHChangeUpdateImageIDList 和 SHChangeDWORDAsIDList by SHChangeNotify 来模拟 SHUpdateImage 函数。
void MyUpdateImage(LPCWSTR pszHashItem, int iIndex, UINT uFlags, int iImageIndex)
{
SHChangeUpdateImageIDList rgPidl;
SHChangeDWORDAsIDList rgDWord;
int cchLen;
USHORT *pcb;
// Validate parameters: iImageIndex must be a valid system image list value.
if (iImageIndex < 0)
{
return;
}
// Validate parameters: pszHashItem must not exceed MAX_PATH in length
cchLen = lstrlenW(pszHashItem);
if (cchLen >= MAX_PATH)
{
return;
}
// Load SHChangeUpdateImageIDList
rgPidl.dwProcessID = GetCurrentProcessId();
rgPidl.iIconIndex = iIndex;
rgPidl.iCurIndex = iImageIndex;
rgPidl.uFlags = uFlags;
lstrcpynW(rgPidl.szName, pszHashItem, MAX_PATH);
pcb = &rgPidl.szName[cchLen+1];
// Set the size of the first element
rgPidl.cb = (USHORT)((BYTE*)pcb - (BYTE*)rgPidl);
// Terminate the "ITEMIDLIST"
*pcb = 0;
// Load SHChangeDWORDAsIDList
rgDWord.cb = (USHORT)FIELD_OFFSET(SHChangeDWORDAsIDList, cbZero);
rgDWord.dwItem1 = iImageIndex;
rgDWord.dwItem2 = 0;
rgDWord.cbZero = 0;
// Parameters are now in the form that SHCNE_UPDATEIMAGE can accept
SHChangeNotify(SHCNE_UPDATEIMAGE, SHCNF_IDLIST, &rgDWord, &rgPidl);
}
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
标头 | shlobj_core.h (包括 Shlobj.h) |
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈