2017-04-17 06:17:10 -06:00

65 lines
1.6 KiB
C++
Executable File

/*********************************************************************
*<
FILE: rtclick.h
DESCRIPTION: Right-click menu functionality
CREATED BY: Tom Hudson
HISTORY: Created 14 June 1995
*> Copyright (c) 1995, All Rights Reserved.
**********************************************************************/
#ifndef __RTCLICK__
#define __RTCLICK__
const int kMaxMenuEntries = 1000;
class RightClickMenuManager;
class RightClickMenu {
public:
virtual void Init(RightClickMenuManager* manager, HWND hWnd, IPoint2 m)=0;
virtual void Selected(UINT id)=0;
};
typedef RightClickMenu* PRightClickMenu;
typedef Tab<PRightClickMenu> PRightClickMenuTab;
class RCMData {
public:
RightClickMenu *menu;
UINT menuId;
UINT managerId;
RCMData() { menu = NULL; menuId = managerId = 0; };
RCMData(RightClickMenu *menu, UINT menuId, UINT managerID);
};
typedef Tab<RCMData> RCMDataTab;
class RightClickMenuManager {
private:
Stack<HMENU> menuStack;
Tab<HMENU> allSubMenus;
HMENU theMenu;
PRightClickMenuTab menuTab;
RCMDataTab dataTab;
int index;
int limit;
int startId;
public:
CoreExport void Register(RightClickMenu *menu);
CoreExport void Unregister(RightClickMenu *menu);
CoreExport void Init(HMENU menu, int startId, int limit, HWND hWnd, IPoint2 m);
CoreExport void CleanUp();
CoreExport int AddMenu(RightClickMenu *menu, UINT flags, UINT id, LPCTSTR data);
CoreExport int BeginSubMenu(LPCTSTR name);
CoreExport int EndSubMenu();
CoreExport void Process(UINT id);
};
#endif // __RTCLICK__