- Check if IContextMenu_InvokeCommand succeeded

- Pass the identifiers of string as id to _InsertMenuItem function
- Should fix invoking control panel items

svn path=/trunk/; revision=37177
This commit is contained in:
Johannes Anderwald 2008-11-03 21:44:34 +00:00
parent 1daef4a078
commit 60cea54fbe
2 changed files with 10 additions and 8 deletions

View file

@ -1212,7 +1212,7 @@ static HRESULT WINAPI ICPanel_IContextMenu2_QueryContextMenu(
if (LoadStringW(shell32_hInstance, IDS_OPEN, szBuffer, sizeof(szBuffer)/sizeof(WCHAR)))
{
szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0';
_InsertMenuItemW(hMenu, indexMenu++, TRUE, idCmdFirst + Count, MFT_STRING, szBuffer, MFS_DEFAULT);
_InsertMenuItemW(hMenu, indexMenu++, TRUE, IDS_OPEN, MFT_STRING, szBuffer, MFS_DEFAULT); //FIXME identifier
Count++;
}
@ -1224,7 +1224,7 @@ static HRESULT WINAPI ICPanel_IContextMenu2_QueryContextMenu(
}
szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0';
_InsertMenuItemW(hMenu, indexMenu++, TRUE, idCmdFirst + Count, MFT_STRING, szBuffer, MFS_ENABLED);
_InsertMenuItemW(hMenu, indexMenu++, TRUE, IDS_CREATELINK, MFT_STRING, szBuffer, MFS_ENABLED); //FIXME identifier
Count++;
}
return MAKE_HRESULT(SEVERITY_SUCCESS, 0, Count);
@ -1251,7 +1251,7 @@ static HRESULT WINAPI ICPanel_IContextMenu2_InvokeCommand(
TRACE("(%p)->(invcom=%p verb=%p wnd=%p)\n",This,lpcmi,lpcmi->lpVerb, lpcmi->hwnd);
if (lpcmi->lpVerb == MAKEINTRESOURCEA(1))
if (lpcmi->lpVerb == MAKEINTRESOURCEA(IDS_OPEN)) //FIXME
{
ZeroMemory(&sei, sizeof(sei));
sei.cbSize = sizeof(sei);
@ -1264,7 +1264,7 @@ static HRESULT WINAPI ICPanel_IContextMenu2_InvokeCommand(
if (sei.hInstApp <= (HINSTANCE)32)
return E_FAIL;
}
else if (lpcmi->lpVerb == MAKEINTRESOURCEA(2))
else if (lpcmi->lpVerb == MAKEINTRESOURCEA(IDS_CREATELINK)) //FIXME
{
if (!SHGetSpecialFolderPathW(NULL, szPath, CSIDL_DESKTOPDIRECTORY, FALSE))
return E_FAIL;

View file

@ -887,10 +887,12 @@ static HRESULT ShellView_OpenSelectedItems(IShellViewImpl * This)
ici.lpVerb = MAKEINTRESOURCEA( def );
ici.hwnd = This->hWnd;
IContextMenu_InvokeCommand(cm, (LPCMINVOKECOMMANDINFO) &ici );
IContextMenu_Release(cm);
DestroyMenu( hmenu );
return S_OK;
if (IContextMenu_InvokeCommand(cm, (LPCMINVOKECOMMANDINFO) &ici ) == S_OK)
{
IContextMenu_Release(cm);
DestroyMenu( hmenu );
return S_OK;
}
}
}