Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

120 lines
4.0 KiB

  1. /////////////////////////////////////////////////////////////////////////////
  2. // Copyright (C) 1993-1996 Microsoft Corporation. All Rights Reserved.
  3. //
  4. // MODULE: menuutil.h
  5. //
  6. // PURPOSE: Reusable menu & menu command handling code
  7. //
  8. #pragma once
  9. #include "statbar.h"
  10. // #defines that can be used with QueryStatus
  11. inline DWORD QS_ENABLED(BOOL enabled)
  12. {
  13. return (enabled ? OLECMDF_SUPPORTED|OLECMDF_ENABLED : OLECMDF_SUPPORTED);
  14. }
  15. inline DWORD QS_CHECKED(BOOL checked)
  16. {
  17. return (checked ? OLECMDF_SUPPORTED|OLECMDF_ENABLED|OLECMDF_LATCHED : OLECMDF_SUPPORTED|OLECMDF_ENABLED);
  18. }
  19. inline DWORD QS_ENABLECHECK(BOOL enabled, BOOL checked)
  20. {
  21. if (!enabled)
  22. return OLECMDF_SUPPORTED;
  23. else
  24. return (checked ? OLECMDF_SUPPORTED|OLECMDF_ENABLED|OLECMDF_LATCHED : OLECMDF_SUPPORTED|OLECMDF_ENABLED);
  25. }
  26. inline DWORD QS_CHECKFORLATCH(BOOL enabled, BOOL checked)
  27. {
  28. if (!enabled)
  29. return (checked ? OLECMDF_SUPPORTED|OLECMDF_LATCHED : OLECMDF_SUPPORTED);
  30. else
  31. return (checked ? OLECMDF_SUPPORTED|OLECMDF_ENABLED|OLECMDF_LATCHED : OLECMDF_SUPPORTED|OLECMDF_ENABLED);
  32. }
  33. inline DWORD QS_RADIOED(BOOL radioed)
  34. {
  35. return (radioed ? OLECMDF_SUPPORTED|OLECMDF_ENABLED|OLECMDF_NINCHED : OLECMDF_SUPPORTED|OLECMDF_ENABLED);
  36. }
  37. inline DWORD QS_ENABLERADIO(BOOL enabled, BOOL radioed)
  38. {
  39. if (!enabled)
  40. return OLECMDF_SUPPORTED;
  41. else
  42. return (radioed ? OLECMDF_SUPPORTED|OLECMDF_ENABLED|OLECMDF_NINCHED : OLECMDF_SUPPORTED|OLECMDF_ENABLED);
  43. }
  44. //
  45. // FUNCTION: MenuUtil_GetContextMenu()
  46. //
  47. // PURPOSE: Returns a handle to the context menu that is appropriate for
  48. // the folder type passed in pidl. The correct menu items will
  49. // be enabled, disabled, bolded, etc.
  50. //
  51. HRESULT MenuUtil_GetContextMenu(FOLDERID idFolder, IOleCommandTarget *pTarget, HMENU *phMenu);
  52. //
  53. // FUNCTION: MenuUtil_OnDelete()
  54. //
  55. // PURPOSE: Deletes the folder designated by the pidl.
  56. //
  57. void MenuUtil_OnDelete(HWND hwnd, FOLDERID idFolder, BOOL fNoTrash);
  58. void MenuUtil_DeleteFolders(HWND hwnd, FOLDERID *pidFolder, DWORD cFolder, BOOL fNoTrash);
  59. //
  60. // FUNCTION: MenuUtil_OnProperties()
  61. //
  62. // PURPOSE: Displays properties for the folder designated by the pidl
  63. //
  64. void MenuUtil_OnProperties(HWND hwnd, FOLDERID idFolder);
  65. void MenuUtil_OnSetDefaultServer(FOLDERID idFolder);
  66. void MenuUtil_OnSubscribeGroups(HWND hwnd, FOLDERID *pidFolder, DWORD cFolder, BOOL fSubscribe);
  67. void MenuUtil_OnMarkNewsgroups(HWND hwnd, int id, FOLDERID idFolder);
  68. void MenuUtil_SyncThisNow(HWND hwnd, FOLDERID idFolder);
  69. // BUG #41686 Catchup Implementation
  70. void MenuUtil_OnCatchUp(FOLDERID idFolder);
  71. // if you want to prepend use iPos 0
  72. #define MMPOS_APPEND (int)-1
  73. #define MMPOS_REPLACE (int)-2
  74. // MergeMenus uFlags definitions
  75. #define MMF_SEPARATOR 0x0001
  76. #define MMF_BYCOMMAND 0x0002
  77. BOOL MergeMenus(HMENU hmenuSrc, HMENU hmenuDst, int iPos, UINT uFlags);
  78. HMENU LoadPopupMenu(UINT id);
  79. typedef void (*WALKMENUFN)(HMENU, UINT, LPVOID);
  80. void WalkMenu(HMENU hMenu, WALKMENUFN pfn, LPVOID lpv);
  81. HRESULT MenuUtil_EnablePopupMenu(HMENU hPopup, IOleCommandTarget *pTarget);
  82. void MenuUtil_SetPopupDefault(HMENU hPopup, UINT idDefault);
  83. void HandleMenuSelect(CStatusBar *pStatus, WPARAM wParam, LPARAM lParam);
  84. //
  85. // FUNCTION: MenuUtil_ReplaceHelpMenu
  86. //
  87. // PURPOSE: Appends the OE help menu to the back of the menu
  88. //
  89. void MenuUtil_ReplaceHelpMenu(HMENU hMenu);
  90. void MenuUtil_ReplaceNewMsgMenus(HMENU hMenu);
  91. void MenuUtil_ReplaceMessengerMenus(HMENU hMenu);
  92. BOOL MenuUtil_BuildMessengerString(LPTSTR szMesStr, DWORD cchMesStr);
  93. BOOL MenuUtil_HandleNewMessageIDs(DWORD id, HWND hwnd, FOLDERID folderID, BOOL fMail, BOOL fModal, IUnknown *pUnkPump);
  94. HRESULT MenuUtil_NewMessageIDsQueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT *pCmdText, BOOL fMail);
  95. HRESULT MenuUtil_EnableMenu(HMENU hMenu, IOleCommandTarget *pTarget);