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