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.
184 lines
4.6 KiB
184 lines
4.6 KiB
/***********************************************************************
|
|
*
|
|
* X16MENU.H
|
|
*
|
|
* Copyright Microsoft Corporation 1997. All Rights Reserved.
|
|
*
|
|
* This module contains a set of functions to provide Win32 specific
|
|
* windows menu handling ability.
|
|
*
|
|
*
|
|
* This file provides following features:
|
|
*
|
|
* - 32bit specific APIs
|
|
* - Menu ID associated with Popup menu (32bit API only)
|
|
* - Application-defined 32bit value associated with a menu item
|
|
* - (TBD)Read values like hBitmap, hbmpChecked, hbmpUnchecked, MFS_HILIGHT
|
|
*
|
|
* In order to provide these features, following things happen inside:
|
|
*
|
|
* - Provide 32bit specific APIs
|
|
* - Replace 16bit menu APIs to keep track of changes to menus
|
|
* - (TBD)Hook WH_CBT to clean up when a window (and its menu) is destroyed
|
|
*
|
|
* To use these functionalities, you need to do followings:
|
|
*
|
|
* - If you want to associate ID to a popup menu in RC file, add one menu
|
|
* item at the beginning of the popup menu. Define the menu item to
|
|
* have menu string of STR_POPUPMENUID and ID value for the popup menu.
|
|
* - Call "InitX16Menu" in the beginning of your application (usually
|
|
* before creating any Windows, and before entering message loop.)
|
|
*
|
|
***********************************************************************/
|
|
|
|
#ifndef __INC_X16MENU_H__
|
|
#define __INC_X16MENU_H__
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"{
|
|
#endif
|
|
|
|
#define MIIM_STATE 0x00000001
|
|
#define MIIM_ID 0x00000002
|
|
#define MIIM_SUBMENU 0x00000004
|
|
#define MIIM_CHECKMARKS 0x00000008
|
|
#define MIIM_TYPE 0x00000010
|
|
#define MIIM_DATA 0x00000020
|
|
|
|
#define MF_DEFAULT 0x00001000L
|
|
#define MF_RIGHTJUSTIFY 0x00004000L
|
|
|
|
#define MFT_STRING MF_STRING
|
|
#define MFT_BITMAP MF_BITMAP
|
|
#define MFT_MENUBARBREAK MF_MENUBARBREAK
|
|
#define MFT_MENUBREAK MF_MENUBREAK
|
|
#define MFT_OWNERDRAW MF_OWNERDRAW
|
|
#define MFT_RADIOCHECK 0x00000200L
|
|
#define MFT_SEPARATOR MF_SEPARATOR
|
|
#define MFT_RIGHTORDER 0x00002000L
|
|
#define MFT_RIGHTJUSTIFY MF_RIGHTJUSTIFY
|
|
|
|
/* Menu flags for Add/Check/EnableMenuItem() */
|
|
#define MFS_GRAYED 0x00000003L
|
|
#define MFS_DISABLED MFS_GRAYED
|
|
#define MFS_CHECKED MF_CHECKED
|
|
#define MFS_HILITE MF_HILITE
|
|
#define MFS_ENABLED MF_ENABLED
|
|
#define MFS_UNCHECKED MF_UNCHECKED
|
|
#define MFS_UNHILITE MF_UNHILITE
|
|
#define MFS_DEFAULT MF_DEFAULT
|
|
|
|
#if 0 // win16x now has this definition
|
|
typedef struct tagMENUITEMINFO
|
|
{
|
|
UINT cbSize;
|
|
UINT fMask;
|
|
UINT fType; // used if MIIM_TYPE (4.0) or MIIM_FTYPE (>4.0)
|
|
UINT fState; // used if MIIM_STATE
|
|
UINT wID; // used if MIIM_ID
|
|
HMENU hSubMenu; // used if MIIM_SUBMENU
|
|
HBITMAP hbmpChecked; // used if MIIM_CHECKMARKS
|
|
HBITMAP hbmpUnchecked; // used if MIIM_CHECKMARKS
|
|
DWORD dwItemData; // used if MIIM_DATA
|
|
LPSTR dwTypeData; // used if MIIM_TYPE (4.0) or MIIM_STRING (>4.0)
|
|
UINT cch; // used if MIIM_TYPE (4.0) or MIIM_STRING (>4.0)
|
|
} MENUITEMINFO, FAR *LPMENUITEMINFO, CONST FAR *LPCMENUITEMINFO;
|
|
|
|
//typedef MENUITEMINFO MENUITEMINFOA;
|
|
//typedef MENUITEMINFO CONST FAR *LPCMENUITEMINFOA;
|
|
#endif
|
|
|
|
|
|
#define STR_POPUPMENUID "Popup Menu ID"
|
|
|
|
#define DEFINE_POPUP(name,id) POPUP name \
|
|
BEGIN \
|
|
MENUITEM STR_POPUPMENUID id
|
|
|
|
// EXTERNAL HELPER APIs
|
|
|
|
void
|
|
WINAPI
|
|
X16MenuInitialize(
|
|
HMENU hMenu
|
|
);
|
|
|
|
void
|
|
WINAPI
|
|
X16MenuDeInitialize(
|
|
HMENU hMenu
|
|
);
|
|
|
|
|
|
// 16bit Old MENU APIs
|
|
|
|
BOOL
|
|
WINAPI __export
|
|
X16EnableMenuItem(
|
|
HMENU hMenu,
|
|
UINT idEnableItem,
|
|
UINT uEnable
|
|
);
|
|
|
|
#ifndef DONT_USE_16BIT_MENU_WRAPPER
|
|
#define EnableMenuItem X16EnableMenuItem
|
|
#endif
|
|
|
|
|
|
// 32bit New MENU APIs
|
|
|
|
BOOL
|
|
WINAPI
|
|
GetMenuItemInfo(
|
|
HMENU hMenu,
|
|
UINT uItem,
|
|
BOOL fByPosition,
|
|
LPMENUITEMINFO lpmii
|
|
);
|
|
//#define GetMenuItemInfoA GetMenuItemInfo
|
|
|
|
BOOL
|
|
WINAPI
|
|
SetMenuItemInfo(
|
|
HMENU hMenu,
|
|
UINT uItem,
|
|
BOOL fByPosition,
|
|
LPCMENUITEMINFO lpmii
|
|
);
|
|
//#define SetMenuItemInfoA SetMenuItemInfo
|
|
|
|
BOOL
|
|
WINAPI
|
|
InsertMenuItem(
|
|
HMENU hMenu,
|
|
UINT uItem,
|
|
BOOL fByPosition,
|
|
LPCMENUITEMINFO lpmii );
|
|
//#define InsertMenuItemA InsertMenuItem
|
|
|
|
BOOL
|
|
WINAPI
|
|
GetMenuItemRect(
|
|
HWND hWnd,
|
|
HMENU hMenu,
|
|
UINT uItem,
|
|
LPRECT lprcItem
|
|
);
|
|
|
|
BOOL
|
|
WINAPI
|
|
CheckMenuRadioItem(
|
|
HMENU hMenu,
|
|
UINT idFirst,
|
|
UINT idLast,
|
|
UINT idCheck,
|
|
UINT uFlags
|
|
);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
|
|
#endif //__INC_X16MENU_H__
|