シェル拡張-エクスプローラのコンテキストメニューを拡張 [5]
[4](ソース例)でアップしたソース(CShellMenuExt.cpp)のCShellMenuExt::GetCommandString()は不完全だった。
エクスプローラのステータスバーを表示しているときに、フォーカスがあるコンテキストメニューの項目の説明文を設定することがこの関数の役割の一つでした。
STDMETHODIMP CShellMenuExt::GetCommandString(UINT idCmd,
UINT uFlags,
UINT FAR *reserved,
LPSTR pszName,
UINT cchMax)
{
ODS("CShellMenuExt::GetCommandString()\r\n");
switch (idCmd)
{
case 0:
if (uFlags == GCS_HELPTEXTA){
lstrcpyA(pszName, "GAK メニュー 1 を起動します");
} else if (uFlags == GCS_HELPTEXTW){
// ここではテキストをハードコーディングしているが、
// 変数に保持した値を使うならば MultiByteToWideChar()でユニコード文字列化するなどする。
lstrcpyW((LPWSTR)pszName, L"GAK メニュー 1 を起動します");
} else if (uFlags == GCS_VERBA){
lstrcpyA(pszName, "GAKmenu1");
} else if (uFlags == GCS_VERBW){
lstrcpyW((LPWSTR)pszName, L"GAKmenu1");
}
break;
}
return NOERROR;
}
GCS_VERBA/GCS_VERBWの役割は依然としてよくわかりません。