|
|
//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1995 - 1995.
//
// File: menubg.cxx
//
// Contents: Implementation of IContextMenu
//
// History: 20-Dec-95 BruceFo Created
//
//----------------------------------------------------------------------------
#include "headers.hxx"
#pragma hdrstop
#include "util.hxx"
#include "menubg.hxx"
#include "menuutil.hxx"
#include "resource.h"
STDMETHODIMP CSharesCMBG::QueryContextMenu( HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags ) { UINT idMainMerge; if (uFlags & CMF_DVFILE) { // This IContextMenu was created to add items to the DefView menu.
// We only want to add a "new" item to the "File" menu, so set don't
// do any "main" merge.
idMainMerge = 0; } else { // In this case, it's actually a background right-click context menu,
// so merge in the "New" menu.
idMainMerge = POPUP_SHARESBG_POPUPMERGE2; }
QCMINFO qcm = { hmenu, indexMenu, idCmdFirst, idCmdLast };
switch (m_level) { case 1: MyMergeMenu( g_hInstance, 0, POPUP_SHARESBG_POPUPMERGE1, &qcm); break;
case 2: MyMergeMenu( g_hInstance, idMainMerge, POPUP_SHARESBG_POPUPMERGE2, &qcm); break;
default: appAssert(FALSE); }
return ResultFromShort(qcm.idCmdFirst - idCmdFirst); }
STDMETHODIMP CSharesCMBG::InvokeCommand( LPCMINVOKECOMMANDINFO lpici ) { if (HIWORD(lpici->lpVerb)) { // Deal with string commands
return E_INVALIDARG; }
appAssert(ICOL1_NAME == ICOL2_NAME); appAssert(ICOL1_COMMENT == ICOL2_COMMENT);
UINT idCmd = (UINT)LOWORD(lpici->lpVerb); switch (idCmd) { case FSIDM_SORTBYNAME: ShellFolderView_ReArrange(m_hwnd, ICOL2_NAME); return NOERROR;
case FSIDM_SORTBYCOMMENT: ShellFolderView_ReArrange(m_hwnd, ICOL2_COMMENT); return NOERROR;
case FSIDM_SORTBYPATH: appAssert(m_level >= 2); ShellFolderView_ReArrange(m_hwnd, ICOL2_PATH); return NOERROR;
case FSIDM_SORTBYMAXUSES: appAssert(m_level >= 2); ShellFolderView_ReArrange(m_hwnd, ICOL2_MAXUSES); return NOERROR;
case FSIDM_NEWSHARE: { appAssert(m_level >= 2); // pass in a pointer to our own IUnknown
IUnknown* punk; HRESULT hr = QueryInterface(IID_IUnknown, (LPVOID*)&punk); if (SUCCEEDED(hr)) { hr = ShareDoNew(punk, m_pszMachine); punk->Release(); } return hr; }
default: return E_INVALIDARG; } }
STDMETHODIMP CSharesCMBG::GetCommandString( UINT_PTR idCmd, UINT uType, UINT * pwReserved, LPSTR pszName, UINT cchMax ) { *((LPWSTR)pszName) = TEXT('\0'); if (uType == GCS_HELPTEXT) { LoadStringW(g_hInstance, (UINT)(idCmd + IDS_MH_FSIDM_FIRST), (LPWSTR)pszName, cchMax); return NOERROR; }
return E_FAIL; }
|