- 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))) if (LoadStringW(shell32_hInstance, IDS_OPEN, szBuffer, sizeof(szBuffer)/sizeof(WCHAR)))
{ {
szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0'; 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++; Count++;
} }
@ -1224,7 +1224,7 @@ static HRESULT WINAPI ICPanel_IContextMenu2_QueryContextMenu(
} }
szBuffer[(sizeof(szBuffer)/sizeof(WCHAR))-1] = L'\0'; 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++; Count++;
} }
return MAKE_HRESULT(SEVERITY_SUCCESS, 0, 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); 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)); ZeroMemory(&sei, sizeof(sei));
sei.cbSize = sizeof(sei); sei.cbSize = sizeof(sei);
@ -1264,7 +1264,7 @@ static HRESULT WINAPI ICPanel_IContextMenu2_InvokeCommand(
if (sei.hInstApp <= (HINSTANCE)32) if (sei.hInstApp <= (HINSTANCE)32)
return E_FAIL; return E_FAIL;
} }
else if (lpcmi->lpVerb == MAKEINTRESOURCEA(2)) else if (lpcmi->lpVerb == MAKEINTRESOURCEA(IDS_CREATELINK)) //FIXME
{ {
if (!SHGetSpecialFolderPathW(NULL, szPath, CSIDL_DESKTOPDIRECTORY, FALSE)) if (!SHGetSpecialFolderPathW(NULL, szPath, CSIDL_DESKTOPDIRECTORY, FALSE))
return E_FAIL; return E_FAIL;

View file

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