SHChangeUpdateImageIDList 構造体 (shlobj_core.h)
[SHChangeUpdateImageIDList は、[要件] セクションで指定されたオペレーティング システムで使用できます。 以降のバージョンでは変更または使用できない場合があります。]
SHChangeNotify で使用できるように、ITEMIDLIST を模倣した形式で SHUpdateImage のパラメーターとして使用される情報を格納します。
構文
typedef struct _SHChangeUpdateImageIDList {
USHORT cb;
int iIconIndex;
int iCurIndex;
UINT uFlags;
DWORD dwProcessID;
WCHAR szName[MAX_PATH];
USHORT cbZero;
} SHChangeUpdateImageIDList, *LPSHChangeUpdateImageIDList;
メンバー
cb
種類: USHORT
この構造体のサイズ (バイト単位)。
iIconIndex
型: int
szName で指定されたファイル内のアイコンの 0 から始まるインデックス。 この値を取得するには、 IExtractIcon::GetIconLocation を呼び出し、 piIndex が指す値を取得します。
iCurIndex
型: int
更新中のアイコンのシステム イメージ リスト内の 0 から始まるインデックス。
uFlags
型: UINT
アイコン属性を決定するフラグ。 この値を取得するには、 IExtractIcon::GetIconLocation を呼び出し、 pwFlags が指す値を取得します。 これら 2 つのフラグは 、SHUpdateImage に関連します。
GIL_NOTFILENAME
場所はファイル名とインデックスのペアではありません。 場所からアイコンを抽出するアプリケーションを呼び出すには、このオブジェクトの IExtractIcon::Extract メソッドを呼び出して目的のアイコン イメージを取得する必要があります。
GIL_SIMULATEDOC
呼び出し元のアプリケーションでは、指定したアイコンを使用してドキュメント アイコンを作成する必要があります。
dwProcessID
szName[MAX_PATH]
種類: WCHAR[MAX_PATH]
アイコンを含むファイルの完全修飾パスを指定する null で終わる Unicode 文字列。 この値を取得するには、 IExtractIcon::GetIconLocation を呼び出し、 szIconFile が指す値を取得します。
cbZero
種類: USHORT
注釈
この例では、SHChangeNotify による SHChangeUpdateImageIDList と SHChangeDWORDAsIDList を使用して 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 (デスクトップ アプリのみ) |
Header | shlobj_core.h (Shlobj.h を含む) |