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

📄 listbox.h

📁 3D游戏展示程序
💻 H
字号:
//--------------------------------------------------
//  Desc: ListBox
//  Date: 2006.11.28 /update
//  Author: artsylee
//
//  Copyright (C) 2006 artsylee
//
//--------------------------------------------------

#ifndef _LISTBOX_
#define _LISTBOX_

#include <vector>
#include "Window.h"
#include "ScrollBar.h"
#include "../Core/Font.h"

struct ListBoxItem
{
	char	strText[256];
	void*	pData;

	RECT	rcActive;
	bool	bSelected;
};

enum STYLE 
{
	SINGLESELECTION	= 0,
	MULTISELECTION = 1,
};

#define FONT_HEIGHT		16

class ASE_DLL GListBox : public CWindow
{
public:
	GListBox(CWindow* pParent = NULL);
	virtual ~GListBox();

	virtual bool	LoadFromIni(char* pfilename, char* pIndex);
	virtual void	Render();
	virtual DWORD	ProcessEvent();
	virtual	void	OffSet(int x, int y);

	ListBoxItem*	GetItem(int nIndex);
	int				GetSelectedIndex(int nPreviousSelected = -1);
	ListBoxItem*	GetSelectedItem(int nPreviousSelected = -1);
	void			SelectItem(int nNewIndex, bool bPost = false);

	bool	AddItem(char *szText, void *pData);
	bool	InsertItem(int nIndex, char *szText, void *pData);
	void	RemoveItem(int nIndex);
	void	RemoveAllItems();

	DWORD	GetStyle()					{ return m_dwStyle;		}
	void	SetStyle(DWORD dwStyle)		{ m_dwStyle = dwStyle;	}
	int		GetSize()					{ return m_Items.size();}
	void	SetBorder(int nBorder, int nMargin);

protected:
	void		UpdateRect();
	void		RenderText();

protected:
	GScrollBar*		m_pScroll;
	GFont			m_Font;
	GRect			m_rcSelection;
	GRect			m_rcText;
	int				m_nBorder;
	int				m_nMargin;
	int				m_nTextHeight;

	DWORD			m_dwStyle;
	int				m_nSelected;
	int				m_nSelStart;
	bool			m_bDrag;
	DWORD			m_hBack;
	DWORD			m_hHighLight;

	std::vector<ListBoxItem*> m_Items;
};

class ASE_DLL CoolListBox : public GListBox
{
public:
	CoolListBox(CWindow* pParent = NULL);

	virtual bool	LoadFromIni(char* pfilename, char* pIndex);
	virtual void	Render();
};

#endif // _LISTBOX_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -