www.pudn.com > pda_win.rar > uimenu.h


/*********************************************************************/ 
//	文 件 名:	uiMenu.h 
//	程序说明:	菜单 
//	程序设计:	张学平 
//				2001.10.23		设计完成		说明文档:R004-S234-0001 
//	程序审查:	宋军霞 
//				2002.01.28		审查完成		说明文档:R004-S234-0001 
//	项目编号:	R004-S234 
//	版	  本:	V1.0 
//	版    权:	Reality Plus Technology (ShenZhen) Co.,Ltd. 
/*********************************************************************/ 
#ifndef _GUI_MENU_H 
#define _GUI_MENU_H 
 
#include  
#include  
 
#include  
#include  
#include  
#include  
#include  
 
#define MENU_SYSTEM		0x0000 
#define MENU_TITLE		0x0001 
#define MENU_NORMAL		0x0002 
#define MENU_TYPEMASK	0x0003 
 
#define MENU_FLAG_RIGHT	0x0000 
#define MENU_FLAG_LEFT	0x0004 
#define MENU_FLAG_NONE	0x0008 
#define MENU_FLAGMASK	0x00c0 
 
#define MENU_SHRINK		0x0000 
#define MENU_POPUP		0x0001 
 
#define MAX_MENUITEM_COUNT		8			// 最大菜单项数 
#define GUI_MENU_CAPTION_SIZE	31			// 菜单标题的最大字符数 
#define GUI_MENU_ITEM_SIZE		15			// 菜单标题的最大字符数 
 
#define MENUITEM_TOP_GAP        2			// 菜单项与顶端之间的距离 
#define MENUITEM_HEIGHT_GAP     4			// 菜单项之间的距离 
 
typedef struct tagMenuItemInfo	// 调用创建窗口函数时传递参数用 
{ 
	BYTE  *caption;		// 菜单项显示字串 
	short command;		// 菜单项命令字,作为消息MENU_CLICK的x参数, 由用户指定,但不能为0。 
} TMenuItemInfo; 
 
typedef struct tagMenuItem	// 菜单中的菜单项链表 
{ 
	char caption[GUI_MENU_ITEM_SIZE+1];	// 菜单项内容 
	short check;						// 菜单项是否具有Check属性 
	short command;						// 消息MENU_CLICK中x的参数,不能为0 
	struct tagMenuItem *next;			// 指向同一菜单中的下一个菜单项 
} TMenuItem; 
 
typedef struct tagGuiMenu 
{ 
	TGuiControl base; 
	short popupFlag;		// 状态标志,展开:非0,收回:0 
	short activeItem;		// 被激活的菜单项序号,初始值为-1 
	short color;			// 前景色,缺省为黑色 
	short backColor;		// 背景色,缺省为白色 
	short countItem;		// 菜单项数 
	short popup_left, popup_top, popup_right, popup_bottom;	// 展开时的座标 
	char  caption[GUI_MENU_CAPTION_SIZE+1];	// 标题 
	TMenuItem *pMenuList;					// 菜单项结构链表 
} TGuiMenu; 
 
// 创建菜单 
DLL_EXP(HNDL) guiMenu_Create(short left,short top,short right,short bottom,const char* caption, WORD style); 
 
// 添加一个菜单项 
DLL_EXP(STATUS) guiMenu_AppendItem(HNDL hMenu, const char *szItem, short nCommand); 
 
// 插入一个菜单项 
DLL_EXP(STATUS) guiMenu_InsertItem(HNDL hMenu, const char *szItem, short nCommand, short nPos ); 
 
// 删除一个菜单项 
DLL_EXP(STATUS) guiMenu_DeleteItem(HNDL hMenu, short nPos); 
 
// 设置菜单标题 
DLL_EXP(STATUS) guiMenu_SetCaption(HNDL hMenu,const char *caption); 
 
// 获取菜单标题 
DLL_EXP(char *) guiMenu_GetCaption(HNDL hMenu); 
 
// 展开菜单 
DLL_EXP(STATUS) guiMenu_Popup(HNDL hMenu); 
 
// 收回已展开的菜单 
DLL_EXP(void) guiMenu_Shrink(void); 
 
// 内部函数 
// 删除菜单及其中的内容 
STATUS  _guiMenu_Delete(HNDL hMenu); 
 
// 显示菜单(名称及其标志) 
STATUS  _guiMenu_Show(HNDL hMenu); 
 
// 菜单控件对消息的响应 
void  _guiMenu_Action(HNDL hMenu, WORD message, short x , short y); 
 
// 系统对菜单的处理 
BOOL _guiMenuHandler( WORD type, short x, short y ); 
 
#endif  // end of #ifdef _GUI_MENU_H