///////////////////////////////////////////////////////////////////////////// // Copyright (C) 1993-1996 Microsoft Corporation. All Rights Reserved. // // MODULE: menuutil.h // // PURPOSE: Reusable menu & menu command handling code // #pragma once #include "statbar.h" // #defines that can be used with QueryStatus inline DWORD QS_ENABLED(BOOL enabled) { return (enabled ? OLECMDF_SUPPORTED|OLECMDF_ENABLED : OLECMDF_SUPPORTED); } inline DWORD QS_CHECKED(BOOL checked) { return (checked ? OLECMDF_SUPPORTED|OLECMDF_ENABLED|OLECMDF_LATCHED : OLECMDF_SUPPORTED|OLECMDF_ENABLED); } inline DWORD QS_ENABLECHECK(BOOL enabled, BOOL checked) { if (!enabled) return OLECMDF_SUPPORTED; else return (checked ? OLECMDF_SUPPORTED|OLECMDF_ENABLED|OLECMDF_LATCHED : OLECMDF_SUPPORTED|OLECMDF_ENABLED); } inline DWORD QS_CHECKFORLATCH(BOOL enabled, BOOL checked) { if (!enabled) return (checked ? OLECMDF_SUPPORTED|OLECMDF_LATCHED : OLECMDF_SUPPORTED); else return (checked ? OLECMDF_SUPPORTED|OLECMDF_ENABLED|OLECMDF_LATCHED : OLECMDF_SUPPORTED|OLECMDF_ENABLED); } inline DWORD QS_RADIOED(BOOL radioed) { return (radioed ? OLECMDF_SUPPORTED|OLECMDF_ENABLED|OLECMDF_NINCHED : OLECMDF_SUPPORTED|OLECMDF_ENABLED); } inline DWORD QS_ENABLERADIO(BOOL enabled, BOOL radioed) { if (!enabled) return OLECMDF_SUPPORTED; else return (radioed ? OLECMDF_SUPPORTED|OLECMDF_ENABLED|OLECMDF_NINCHED : OLECMDF_SUPPORTED|OLECMDF_ENABLED); } // // FUNCTION: MenuUtil_GetContextMenu() // // PURPOSE: Returns a handle to the context menu that is appropriate for // the folder type passed in pidl. The correct menu items will // be enabled, disabled, bolded, etc. // HRESULT MenuUtil_GetContextMenu(FOLDERID idFolder, IOleCommandTarget *pTarget, HMENU *phMenu); // // FUNCTION: MenuUtil_OnDelete() // // PURPOSE: Deletes the folder designated by the pidl. // void MenuUtil_OnDelete(HWND hwnd, FOLDERID idFolder, BOOL fNoTrash); void MenuUtil_DeleteFolders(HWND hwnd, FOLDERID *pidFolder, DWORD cFolder, BOOL fNoTrash); // // FUNCTION: MenuUtil_OnProperties() // // PURPOSE: Displays properties for the folder designated by the pidl // void MenuUtil_OnProperties(HWND hwnd, FOLDERID idFolder); void MenuUtil_OnSetDefaultServer(FOLDERID idFolder); void MenuUtil_OnSubscribeGroups(HWND hwnd, FOLDERID *pidFolder, DWORD cFolder, BOOL fSubscribe); void MenuUtil_OnMarkNewsgroups(HWND hwnd, int id, FOLDERID idFolder); void MenuUtil_SyncThisNow(HWND hwnd, FOLDERID idFolder); // BUG #41686 Catchup Implementation void MenuUtil_OnCatchUp(FOLDERID idFolder); // if you want to prepend use iPos 0 #define MMPOS_APPEND (int)-1 #define MMPOS_REPLACE (int)-2 // MergeMenus uFlags definitions #define MMF_SEPARATOR 0x0001 #define MMF_BYCOMMAND 0x0002 BOOL MergeMenus(HMENU hmenuSrc, HMENU hmenuDst, int iPos, UINT uFlags); HMENU LoadPopupMenu(UINT id); typedef void (*WALKMENUFN)(HMENU, UINT, LPVOID); void WalkMenu(HMENU hMenu, WALKMENUFN pfn, LPVOID lpv); HRESULT MenuUtil_EnablePopupMenu(HMENU hPopup, IOleCommandTarget *pTarget); void MenuUtil_SetPopupDefault(HMENU hPopup, UINT idDefault); void HandleMenuSelect(CStatusBar *pStatus, WPARAM wParam, LPARAM lParam); // // FUNCTION: MenuUtil_ReplaceHelpMenu // // PURPOSE: Appends the OE help menu to the back of the menu // void MenuUtil_ReplaceHelpMenu(HMENU hMenu); void MenuUtil_ReplaceNewMsgMenus(HMENU hMenu); void MenuUtil_ReplaceMessengerMenus(HMENU hMenu); BOOL MenuUtil_BuildMessengerString(LPTSTR szMesStr, DWORD cchMesStr); BOOL MenuUtil_HandleNewMessageIDs(DWORD id, HWND hwnd, FOLDERID folderID, BOOL fMail, BOOL fModal, IUnknown *pUnkPump); HRESULT MenuUtil_NewMessageIDsQueryStatus(const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT *pCmdText, BOOL fMail); HRESULT MenuUtil_EnableMenu(HMENU hMenu, IOleCommandTarget *pTarget);