⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 listmenu.h

📁 brew一些源码
💻 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 + -