123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- #ifndef _MILKDROP_MENU_H_
- #define _MILKDROP_MENU_H_ 1
- #include <windows.h>
- typedef enum {
- MENUITEMTYPE_BUNK,
- MENUITEMTYPE_BOOL,
- MENUITEMTYPE_INT,
- MENUITEMTYPE_FLOAT,
- MENUITEMTYPE_LOGFLOAT,
- MENUITEMTYPE_BLENDABLE,
- MENUITEMTYPE_LOGBLENDABLE,
- MENUITEMTYPE_STRING,
- MENUITEMTYPE_UIMODE,
-
- } MENUITEMTYPE;
- #define MAX_CHILD_MENUS 16
- typedef void (*MilkMenuCallbackFnPtr)(LPARAM param1, LPARAM param2);
- class CMilkMenuItem
- {
- public:
- CMilkMenuItem();
- ~CMilkMenuItem();
- wchar_t m_szName[64];
- wchar_t m_szToolTip[1024];
- MENUITEMTYPE m_type;
- float m_fMin;
- float m_fMax;
- unsigned int m_wParam;
- unsigned int m_lParam;
- MilkMenuCallbackFnPtr m_pCallbackFn;
- ptrdiff_t m_var_offset;
- LPARAM m_original_value;
- int m_nLastCursorPos;
- bool m_bEnabled;
-
-
-
- CMilkMenuItem *m_pNext;
- };
- class CMilkMenu
- {
- public:
- CMilkMenu();
- ~CMilkMenu();
- void Init(wchar_t *szName);
- void Finish();
- void AddChildMenu(CMilkMenu *pChildMenu);
- void AddItem(wchar_t *szName, void *var, MENUITEMTYPE type, wchar_t *szToolTip,
- float min=0, float max=0, MilkMenuCallbackFnPtr pCallback=NULL,
- unsigned int wParam=0, unsigned int lParam=0);
- void SetParentPointer(CMilkMenu *pParentMenu) { m_pParentMenu = pParentMenu; }
- LRESULT HandleKeydown(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
- void DrawMenu(RECT rect, int xR, int yB, int bCalcRect=0, RECT* pCalcRect=NULL);
- void OnWaitStringAccept(wchar_t *szNewString);
- void EnableItem(wchar_t* szName, bool bEnable);
- CMilkMenuItem* GetCurItem()
- {
- CMilkMenuItem *pItem = m_pFirstChildItem;
- for (int i=m_nChildMenus; i < m_nCurSel; i++)
- pItem = pItem->m_pNext;
- return pItem;
- }
- const wchar_t* GetName() { return m_szMenuName; }
- void Enable(bool bEnabled) { m_bEnabled = bEnabled; }
- bool IsEnabled() { return m_bEnabled; }
- bool ItemIsEnabled(int i);
- protected:
- void Reset();
- CMilkMenu *m_pParentMenu;
- CMilkMenu *m_ppChildMenu[MAX_CHILD_MENUS];
- CMilkMenuItem *m_pFirstChildItem;
- wchar_t m_szMenuName[64];
- int m_nChildMenus;
- int m_nChildItems;
- int m_nCurSel;
- bool m_bEditingCurSel;
- bool m_bEnabled;
- };
- #endif
|