menu.cpp
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 2k
Category:

Windows Kernel

Development Platform:

Visual C++

  1. #include "folder.h"
  2. #include "utils.h"
  3. #include <mluisupp.h>
  4. ///////////////////////////////////////////////////////////////////////////////
  5. // IContextMenu methods
  6. HRESULT CControlFolder::QueryContextMenu(
  7.                                      HMENU hmenu, 
  8.                                      UINT indexMenu, 
  9.                                      UINT idCmdFirst,
  10.                                      UINT idCmdLast,
  11.                                      UINT uFlags)
  12. {
  13.     USHORT cItems = 0;
  14.     DebugMsg(DM_TRACE, TEXT("cf - cm - QueryContextMenu() called."));
  15.     if (uFlags == CMF_NORMAL)
  16.     {
  17.         HMENU hCtrlMenu = LoadMenu(MLGetHinst(), MAKEINTRESOURCE(IDR_CONTROLFOLDER));
  18.         if (hmenu)
  19.         {
  20.             MENUITEMINFO mii;
  21.             mii.cbSize = sizeof(mii);
  22.             mii.fMask = MIIM_ID;
  23.             mii.wID = SFVIDM_MENU_ARRANGE;
  24.             SetMenuItemInfo(hCtrlMenu, 0, TRUE, &mii);
  25.             cItems = (USHORT)MergeMenuHierarchy(hmenu, hCtrlMenu, idCmdFirst, idCmdLast);
  26.             DestroyMenu(hCtrlMenu);
  27.         }
  28.     }
  29.     SetMenuDefaultItem(hmenu, indexMenu, MF_BYPOSITION);
  30.     return ResultFromShort(cItems);    // number of menu items    
  31. }
  32. HRESULT CControlFolder::InvokeCommand(LPCMINVOKECOMMANDINFO pici)
  33. {
  34.     // We don't deal with the VERBONLY case
  35.     DebugMsg(DM_TRACE, TEXT("cf - cm - InvokeCommand() called."));
  36.     Assert((DWORD_PTR)(pici->lpVerb) <= 0xFFFF);
  37.     
  38.     int idCmd;
  39.     if ((DWORD_PTR)(pici->lpVerb) > 0xFFFF)
  40.         idCmd = -1;
  41.     else
  42.         idCmd = LOWORD(pici->lpVerb);
  43.     
  44.     return ControlFolderView_Command(pici->hwnd, idCmd);
  45. }
  46. HRESULT CControlFolder::GetCommandString(
  47.                                      UINT_PTR idCmd, 
  48.                                      UINT uFlags, 
  49.                                      UINT *pwReserved,
  50.                                      LPTSTR pszName, 
  51.                                      UINT cchMax)
  52. {
  53.     HRESULT hres = E_FAIL;
  54.     DebugMsg(DM_TRACE, TEXT("cf - cm - GetCommandString() called."));
  55.     if (uFlags == GCS_HELPTEXT)
  56.     {
  57.         MLLoadString((UINT) (idCmd + IDS_HELP_SORTBYNAME), pszName, cchMax);
  58.         hres = S_OK;
  59.     }
  60.     return hres;
  61. }