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

📄 asl_gui.h

📁 泡泡堂单机版(含ASL游戏引擎源码 泡泡堂单机版(含ASL游戏引擎源码
💻 H
字号:
//-----------------------------------------------------------------------------
//
//    ____ Azure Star Game Engine 蓝星游戏引擎 ____
//
//    Copyright (c) 2006, 蓝星工作室
//    All rights reserved.
//
//    文件名称: asl_gui.h
//    摘    要: GUI系统类定义
//
//    当前版本: 1.0
//    作    者: 汤  祺
//    创建日期: 2006-8-12
//
//-----------------------------------------------------------------------------

#ifndef ASL_GUI_INCLUDE
#define ASL_GUI_INCLUDE

#pragma once

#include "asl_guiobj.h"
#include "asl_bitmap.h"
#include <list>

//-----------------------------------------------------------------------------
namespace ASL
{

// 取全局唯一实例
#define GUI ASLGui::Instance()

//-----------------------------------------------------------------------------
// 类名: ASLGui
// 功能: GUI系统类
//       本类是GUI系统的总管. 各个控件通过在本类中注册而激活, 本类将负责处理
//       用户输入, 调用各注册控件的事件处理函数, 协调各注册控件间的关系. 本类
//       只有全局唯一实例, 使用Singleton模式实现.
//-----------------------------------------------------------------------------
class ASLGui
{

// 私有构造函数, 析构函数, 仅通过Instance()创建
private:
	ASLGui(void);
	~ASLGui(void);

// 禁用拷贝构造函数, 赋值函数, 无实现
	ASLGui(const ASLGui&);
	ASLGui& operator=(const ASLGui&);



// 公有函数
public:
	// 取全局唯一实例
	static ASLGui& Instance(void);

	// 初始化, 设定画布
	void Init(ASLBitmap &bmCanvas) { m_pbmCanvas = &bmCanvas; }

	// 取画布
	ASLBitmap& GetCanvas(void)
	{ ASSERT(m_pbmCanvas != NULL); return *m_pbmCanvas; }
	
	// 注册控件
	void AddCtrl(ASLControl *pCtrl);
	
	// 注销控件
	void DelCtrl(ASLControl *pCtrl);
	
	// 使控件获得焦点
	void SetFocus(ASLControl *pCtrl);
	
	// 更新GUI系统
	void Update(float fDelta);
	
	// 绘制GUI系统
	void Draw(void);
	
	// 添加单选按钮
	void AddRadio(ASLRadioButton *pRadio);

	// 删除单选按钮
	void DelRadio(ASLRadioButton *pRadio);
	
	// 选中单选按钮
	void CheckRadio(ASLRadioButton *pRadio);



// 私有函数
private:
	// 处理控件的鼠标事件
	void ProcessMouseEvent(ASLControl *pCtrl);



// 成员变量
private:
	std::list<ASLControl*> m_lstpCtrls;			// 控件链表
	std::list<ASLRadioButton*> m_lstpRadios;	// 单选按钮链表
	ASLControl *m_pFocusedCtrl;					// 获得焦点的控件
	ASLControl *m_pLockedCtrl;					// 被锁定的控件
	ASLControl *m_pHoveredCtrl;					// 鼠标下的控件
	ASLBitmap  *m_pbmCanvas;					// 画布指针

}; // ASLGui类定义结束

} // namespace ASL

#endif // ASL_GUI_INCLUDE

⌨️ 快捷键说明

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