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.
 
 
 
 
 
 

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__