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

📄 guiwarnbox.h

📁 HGE 2D游戏引擎制作的一个演示
💻 H
字号:
/**********************************************
			警告信息模态对话框类
**********************************************/

#pragma once
#include "GUI.h"

// 模态警告框

#define WRAN_BTN_COUNT	11			//总共11个按钮

enum WARNBOXBTNID
{
	WBTN_ID_NULL		= 0,	//空白
	WBTN_ID_OK			= 1,	//确认
	WBTN_ID_CANCEL		= 2,	//取消
	WBTN_ID_YES			= 3,	//是
	WBTN_ID_NO			= 4,	//否
	WBTN_ID_ABORT		= 5,	//中断
	WBTN_ID_RETRY		= 6,	//重试
	WBTN_ID_IGNORE		= 7,	//忽略
	WBTN_ID_QUIT		= 8,	//退出
	WBTN_ID_LEAVE		= 9,	//离开
	WBTN_ID_CLOSE		= 10	//关闭
};

///模态警告框状态
#define WBS_OK					0x0001		//(确认)
#define WBS_OKCANCEL			0x0002		//(确认|取消)
#define WBS_YESNO				0x0003		//(是|否)
#define WBS_YESNOCANCEL			0x0004		//(是|否|取消)
#define WBS_ABORTRETRYIGNORE	0x0005		//(中断|重试|忽略)
#define WBS_QUIT				0x0006		//(退出|取消)
#define WBS_LEAVE				0x0007		//(离开|取消)
#define WBS_CLOSE				0x0008		//(关闭|取消)

#define WRAN_FRAME_COUNT	10		//框架共10部分

enum WARNBOXFRAME
{
	WBF_TITLE_L			= 0,	//标题左
	WBF_TITLE_M			= 1,	//标题中
	WBF_TITLE_R			= 2,	//标题右
	WBF_TITLE_INFO		= 3,	//标题信息
	WBF_BODY_L			= 4,	//正文左
	WBF_BODY_M			= 5,	//正文中
	WBF_BODY_R			= 6,	//正文右
	WBF_BOTTOM_L		= 7,	//底部左
	WBF_BOTTOM_M		= 8,	//底部中
	WBF_BOTTOM_R		= 9,	//底部右
};

#define DEFAULT_BODY_WIDTH	200
#define DEFAULT_BODY_HEIGHT	100

/// 注意
/// 模态对话框如果设置捕获对象,则把消息结果消息发送到捕获对象的OnMessage()
/// 如果未设置捕获对象,则把消息结果发送到模态对话框的父对象的OnMessage()

class GUIWarnBox :
	public GUI
{
public:
	GUIWarnBox(void);
	~GUIWarnBox(void);

protected:
	char		m_szWarnMsg[1024];
	bool		m_bMouseLButtonDown;
	GUIPoint	m_ptMouseOffPos;
	float		m_BtnWidth;
	float		m_BtnHeight;

	float		m_BorderWidth;
	float		m_BorderHeight;

	float		m_FontWidth;
	float		m_FontHeight;

	class GUIButton*	m_pWarnBoxClose;
	class GUIButton*	m_pWarnBoxButton[WRAN_BTN_COUNT];
	class GUI*	m_pWarnBoxFrame[WRAN_FRAME_COUNT];

	//接受模态对话框消息的对象
	class GUI*	m_pCaptureWarnObject;
	class GUI*	m_pLastEditFocus;

public:
	bool CreateGUIWarnBox(char* lpszName,GUI* pParent);
	bool MessageBox(char* msg,GUI* pCaptureObject = NULL,DWORD dwType = WBS_OK);

protected:
	void DrawFrame(float framew,float frameh);
	void ShowAllButton(bool bShow);
	void DrawButton(DWORD dwType);

private:
	float GetStringLineCount(char *str);										///获得字符串的行数
	float GetStringMaxLength(char *str);										///获得最大字符串的长度

public:
	virtual void Render();														///绘制
	virtual void OnChildMessage(GUI* pChildGUI,UINT iMsg, WPARAM wParam, LPARAM lParam);///子对象发送了命令请求

	virtual int OnMouseLButton(float x,float y,bool down);						///左键按下松开(在区域内)
	virtual void Updata(float dt);												///立即更新

};

⌨️ 快捷键说明

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