/************************************************************************** * ISvItemCm_fnInvokeCommand() */ static HRESULT WINAPI ISvItemCm_fnInvokeCommand( IContextMenu *iface, LPCMINVOKECOMMANDINFO lpcmi) { ICOM_THIS(ItemCmImpl, iface); TRACE("(%p)->(invcom=%p verb=%p wnd=%x)\n",This,lpcmi,lpcmi->lpVerb, lpcmi->hwnd); if(LOWORD(lpcmi->lpVerb) > FCIDM_SHVIEWLAST) return E_INVALIDARG; switch(LOWORD(lpcmi->lpVerb)) { case FCIDM_SHVIEW_EXPLORE: DoOpenExplore(iface, lpcmi->hwnd, "explore"); break; case FCIDM_SHVIEW_OPEN: DoOpenExplore(iface, lpcmi->hwnd, "open"); break; case FCIDM_SHVIEW_RENAME: DoRename(iface, lpcmi->hwnd); break; case FCIDM_SHVIEW_DELETE: DoDelete(iface); break; case FCIDM_SHVIEW_COPY: DoCopyOrCut(iface, lpcmi->hwnd, FALSE); break; case FCIDM_SHVIEW_CUT: DoCopyOrCut(iface, lpcmi->hwnd, TRUE); break; } return NOERROR; }
/************************************************************************** * ISvItemCm_fnInvokeCommand() */ static HRESULT WINAPI ISvItemCm_fnInvokeCommand( IContextMenu2 *iface, LPCMINVOKECOMMANDINFO lpcmi) { ItemCmImpl *This = impl_from_IContextMenu2(iface); if (lpcmi->cbSize != sizeof(CMINVOKECOMMANDINFO)) FIXME("Is an EX structure\n"); TRACE("(%p)->(invcom=%p verb=%p wnd=%p)\n",This,lpcmi,lpcmi->lpVerb, lpcmi->hwnd); if( HIWORD(lpcmi->lpVerb)==0 && LOWORD(lpcmi->lpVerb) > FCIDM_SHVIEWLAST) { TRACE("Invalid Verb %x\n",LOWORD(lpcmi->lpVerb)); return E_INVALIDARG; } if (HIWORD(lpcmi->lpVerb) == 0) { switch(LOWORD(lpcmi->lpVerb-This->verb_offset)) { case FCIDM_SHVIEW_EXPLORE: TRACE("Verb FCIDM_SHVIEW_EXPLORE\n"); DoOpenExplore(This, lpcmi->hwnd, "explore"); break; case FCIDM_SHVIEW_OPEN: TRACE("Verb FCIDM_SHVIEW_OPEN\n"); DoOpenExplore(This, lpcmi->hwnd, "open"); break; case FCIDM_SHVIEW_RENAME: TRACE("Verb FCIDM_SHVIEW_RENAME\n"); DoRename(This, lpcmi->hwnd); break; case FCIDM_SHVIEW_DELETE: TRACE("Verb FCIDM_SHVIEW_DELETE\n"); DoDelete(This); break; case FCIDM_SHVIEW_COPY: TRACE("Verb FCIDM_SHVIEW_COPY\n"); DoCopyOrCut(This, lpcmi->hwnd, FALSE); break; case FCIDM_SHVIEW_CUT: TRACE("Verb FCIDM_SHVIEW_CUT\n"); DoCopyOrCut(This, lpcmi->hwnd, TRUE); break; case FCIDM_SHVIEW_PROPERTIES: TRACE("Verb FCIDM_SHVIEW_PROPERTIES\n"); DoOpenProperties(This, lpcmi->hwnd); break; default: FIXME("Unhandled Verb %xl\n",LOWORD(lpcmi->lpVerb)-This->verb_offset); return E_INVALIDARG; } } else { TRACE("Verb is %s\n",debugstr_a(lpcmi->lpVerb)); if (strcmp(lpcmi->lpVerb,"delete")==0) DoDelete(This); else if (strcmp(lpcmi->lpVerb,"properties")==0) DoOpenProperties(This, lpcmi->hwnd); else { FIXME("Unhandled string verb %s\n",debugstr_a(lpcmi->lpVerb)); return E_FAIL; } } return NOERROR; }
static HRESULT WINAPI ItemMenu_InvokeCommand( IContextMenu3 *iface, LPCMINVOKECOMMANDINFO lpcmi) { ContextMenu *This = impl_from_IContextMenu3(iface); if (lpcmi->cbSize != sizeof(CMINVOKECOMMANDINFO)) FIXME("Is an EX structure\n"); TRACE("(%p)->(invcom=%p verb=%p wnd=%p)\n",This,lpcmi,lpcmi->lpVerb, lpcmi->hwnd); if (IS_INTRESOURCE(lpcmi->lpVerb) && LOWORD(lpcmi->lpVerb) > FCIDM_SHVIEWLAST) { TRACE("Invalid Verb %x\n", LOWORD(lpcmi->lpVerb)); return E_INVALIDARG; } if (IS_INTRESOURCE(lpcmi->lpVerb)) { switch(LOWORD(lpcmi->lpVerb)) { case FCIDM_SHVIEW_EXPLORE: TRACE("Verb FCIDM_SHVIEW_EXPLORE\n"); DoOpenExplore(This, lpcmi->hwnd, "explore"); break; case FCIDM_SHVIEW_OPEN: TRACE("Verb FCIDM_SHVIEW_OPEN\n"); DoOpenExplore(This, lpcmi->hwnd, "open"); break; case FCIDM_SHVIEW_RENAME: { IShellBrowser *browser; /* get the active IShellView */ browser = (IShellBrowser*)SendMessageA(lpcmi->hwnd, CWM_GETISHELLBROWSER, 0, 0); if (browser) { IShellView *view; if(SUCCEEDED(IShellBrowser_QueryActiveShellView(browser, &view))) { TRACE("(shellview=%p)\n", view); IShellView_SelectItem(view, This->apidl[0], SVSI_DESELECTOTHERS|SVSI_EDIT|SVSI_ENSUREVISIBLE|SVSI_FOCUSED|SVSI_SELECT); IShellView_Release(view); } } break; } case FCIDM_SHVIEW_DELETE: TRACE("Verb FCIDM_SHVIEW_DELETE\n"); DoDelete(This); break; case FCIDM_SHVIEW_COPY: TRACE("Verb FCIDM_SHVIEW_COPY\n"); DoCopyOrCut(This, lpcmi->hwnd, FALSE); break; case FCIDM_SHVIEW_CUT: TRACE("Verb FCIDM_SHVIEW_CUT\n"); DoCopyOrCut(This, lpcmi->hwnd, TRUE); break; case FCIDM_SHVIEW_PROPERTIES: TRACE("Verb FCIDM_SHVIEW_PROPERTIES\n"); DoOpenProperties(This, lpcmi->hwnd); break; default: FIXME("Unhandled Verb %xl\n",LOWORD(lpcmi->lpVerb)); return E_INVALIDARG; } } else { TRACE("Verb is %s\n",debugstr_a(lpcmi->lpVerb)); if (strcmp(lpcmi->lpVerb,"delete")==0) DoDelete(This); else if (strcmp(lpcmi->lpVerb,"properties")==0) DoOpenProperties(This, lpcmi->hwnd); else { FIXME("Unhandled string verb %s\n",debugstr_a(lpcmi->lpVerb)); return E_FAIL; } } return S_OK; }