📄 listmenu.h
字号:
/*===========================================================================
列表控制
FILE: ListMenu.h
===========================================================================*/
#include "HeaderData.h"
#ifndef BBC_BAO_CLISTMENU_2006_5_24
#define BBC_BAO_CLISTMENU_2006_5_24
#include "FrameImage.h"
//////////////////////////////////////////////////////////////////////////
#define ITEM_FREE(p) CListItem_Release((CListItem**)&(p))
#define LIST_FREE(p) CListMenu_Release((CListMenu**)&(p))
//////////////////////////////////////////////////////////////////////////
//命令
#define MENU_COMMAND EVT_USER + 1
//////////////////////////////////////////////////////////////////////////
//默认数值 菜单属性
#define GET_PREV 0
#define GET_NEXT 1
#define SCROLLBAR_WIDTH 4//滚动条宽度
#define SCROLL_LONGTIME 2000
#define SCROLL_TIME 200
#define TEXT_TOPHIGH 1 //菜单项文字在选择巨型中距离顶端的距离
#define BETWEEN_LIST 18 //默认列表间距
#define ICON_WIDTH 18 //图标宽度
#define SELECT_COLOR MAKE_RGB(255 , 0 , 0)//选种条颜色
#define SELECT_FILL MAKE_RGB(180 , 0 , 0)
#define SELECT_TEXT_COLOR MAKE_RGB(255 , 255 , 255)
#define TEXT_COLOR MAKE_RGB(180 , 0 , 0)
#define SCROLL_BACK MAKE_RGB(255 , 255 , 255)//滚动条背景
#define SCROLL_COLOR MAKE_RGB(255 , 0 , 0)//滚动条边框
#define SCROLL_FILL MAKE_RGB(180 , 0 , 0)//滚顶条
//标记定义
#define UP_MOVE 1
#define DOWN_MOVE 2
//
#define MAXLIST 8
#define MAXICON 5
//返回代码
#define CLISTMENU_NOERROR 0
typedef struct tagListItem CListItem;
typedef struct tagListMenu CListMenu;
struct tagListMenu
{
AEEApplet* m_pme;
boolean m_bIsActive; //是否处于激活状态
AEERect* m_pRect; //显示矩形(列表菜单的显示范围)(静态)
CFrameImage* m_pImageFrame; //菜单图标资源列表
//滚动显示当前项参数
boolean m_bIsScroll; //是否需要滚屏显示当前项;
AEERect m_SelectRect; //当前项目选中矩形
int m_x; //滚动显示需要的变量
int m_y; //滚动显示需要的变量
AEEFont m_eMfont; //菜单字体
int m_nTextLenPix; //文本实际长度
uint16 m_nSep; //菜单项间距
uint16 m_nCurIndex; //当前选择项目
uint16 m_nCurPage; //当前选择页
uint16 m_nPageSize; //一叶显示记录数
uint16 m_nItemCount; //节点个数
CListItem* m_pCurPage; //当前页地址
CListItem* m_pCurItem; //当前选择项
CListItem* m_pListHead; //连表的开始
CListItem* m_pListLast; //连表结尾 添加点
};
struct tagListItem
{
AECHAR* m_pAECname; //中文名称
uint32 m_nPopFlg; //弹出菜单的配置信息
uint16 m_nNodID; //可用来区分节点的类型
uint16 m_nIcon; //当前引用的图标ID
uint32 m_nData; //临时保存标记位
void* m_pData; //数据
CListItem* m_pNext;
CListItem* m_pPrev;
};
//ClistMenu
boolean CListMenu_HandleEvent(CListMenu* pme , AEEEvent eCode , uint16 wParam , uint32 dwParam);
CListMenu* CListMenu_New(AEEApplet* pme ,//应用结构指针
AEERect* pRect ,//显示范围,这样定义的好处是统一范围
CFrameImage* pFramIcon//列表图标资源
);//
void CListMenu_Release(CListMenu** pFree);
boolean CListMenu_ADDItem(CListMenu* pMenu ,
AECHAR* pAECname ,
void* pData ,
uint16 nIcon ,//图标索引
uint16 nID ,//命令ID
uint32 nFlag);
boolean CListMenu_DelItem(CListMenu* pMenu);//删除当前项//如果最后一项返回false
void CListMenu_Redraw(CListMenu* pMenu);
void CListMenu_Draw(CListMenu* pMenu);
CListItem* CListMenu_GoTo(CListMenu* pMenu , uint16 nIndex);
void CListMenu_SetActive(CListMenu* pMenu , boolean bActive);
//
void ScrollText(CListMenu* pMenu);
AECHAR* CListMenu_GetIndexName(CListMenu* pMenu);
void* CListMenu_GetIndexData(CListMenu* pMenu);
uint16 CListMenu_GetIndexID(CListMenu* pMenu);
uint32 CListMenu_GetIndexFlag(CListMenu* pMenu);
//ClistItem
CListItem* CListItem_New();
CListItem* CListItem_NewEx(AECHAR* pAECname ,
void* pData ,
uint16 nIcon,
uint16 nID ,
uint32 nFlag);
void CListItem_SetItem(CListItem* pItem ,
AECHAR* pAECname ,
void* pData ,
uint16 nIcon ,
uint16 nID ,
uint32 nFlag);
void CListItem_Release(CListItem** pFree);
#endif //BBC_BAO_CLISTMENU_2006_5_24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -