亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? asl_guiobj.h

?? 泡泡堂單機版(含ASL游戲引擎源碼 泡泡堂單機版(含ASL游戲引擎源碼
?? H
?? 第 1 頁 / 共 2 頁
字號:
//-----------------------------------------------------------------------------
//
//    ____ Azure Star Game Engine 藍星游戲引擎 ____
//
//    Copyright (c) 2006, 藍星工作室
//    All rights reserved.
//
//    文件名稱: asl_guiobj.h
//    摘    要: 各種GUI控件類定義
//
//    當前版本: 1.0
//    作    者: 湯  祺
//    創建日期: 2006-8-12
//
//-----------------------------------------------------------------------------

#ifndef ASL_GUIOBJ_INCLUDE
#define ASL_GUIOBJ_INCLUDE

#pragma once

#include "asl_utils.h"
#include "asl_font.h"
#include "asl_input.h"
#include <vector>
#include <list>
#include <string>

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

//-----------------------------------------------------------------------------
// 類的前向聲明
//-----------------------------------------------------------------------------
class ASLControl;

//-----------------------------------------------------------------------------
// 事件處理函數及包裹結構
//-----------------------------------------------------------------------------
typedef void (ASLControl::*NotifyFun)(void);
struct NotifyEvent
{
	NotifyEvent() : function(NULL), invoker(NULL) {}
	NotifyFun function;
	ASLControl *invoker;
};

typedef void (ASLControl::*MouseMoveFun)(POINT pt);
struct MouseMoveEvent
{
	MouseMoveEvent() : function(NULL), invoker(NULL) {}
	MouseMoveFun function;
	ASLControl *invoker;
};

typedef void (ASLControl::*MouseFun)(POINT pt, MouseButton mb);
struct MouseEvent
{
	MouseEvent() : function(NULL), invoker(NULL) {}
	MouseFun function;
	ASLControl *invoker;
};

typedef void (ASLControl::*KeyFun)(DWORD dwKey, ShiftState ss);
struct KeyEvent
{
	KeyEvent() : function(NULL), invoker(NULL) {}
	KeyFun function;
	ASLControl *invoker;
};

typedef void (ASLControl::*KeyPressFun)(char cKey);
struct KeyPressEvent
{
	KeyPressEvent() : function(NULL), invoker(NULL) {}
	KeyPressFun function;
	ASLControl *invoker;
};

//-----------------------------------------------------------------------------
// 用戶通過使用這組宏將自定義事件處理函數與控件捆綁起來.
//-----------------------------------------------------------------------------
#define ON_MOUSEENTER(obj, fun) \
{ \
	(obj)->OnMouseEnter.function = NotifyFun(fun); \
	(obj)->OnMouseEnter.invoker = this; \
}

#define ON_MOUSELEAVE(obj, fun) \
{ \
	(obj)->OnMouseLeave.function = NotifyFun(fun); \
	(obj)->OnMouseLeave.invoker = this; \
}

#define ON_MOUSEMOVE(obj, fun) \
{ \
	(obj)->OnMouseMove.function = MouseMoveFun(fun); \
	(obj)->OnMouseMove.invoker = this; \
}

#define ON_MOUSEDOWN(obj, fun) \
{ \
	(obj)->OnMouseDown.function = MouseFun(fun); \
	(obj)->OnMouseDown.invoker = this; \
}

#define ON_MOUSEUP(obj, fun) \
{ \
	(obj)->OnMouseUp.function = MouseFun(fun); \
	(obj)->OnMouseUp.invoker = this; \
}

#define ON_KEYDOWN(obj, fun) \
{ \
	(obj)->OnKeyDown.function = KeyFun(fun); \
	(obj)->OnKeyDown.invoker = this; \
}

#define ON_KEYUP(obj, fun) \
{ \
	(obj)->OnKeyUp.function = KeyFun(fun); \
	(obj)->OnKeyUp.invoker = this; \
}

#define ON_KEYPRESS(obj, fun) \
{ \
	(obj)->OnKeyPress.function = KeyPressFun(fun); \
	(obj)->OnKeyPress.invoker = this; \
}

#define ON_ENTER(obj, fun) \
{ \
	(obj)->OnEnter.function = NotifyFun(fun); \
	(obj)->OnEnter.invoker = this; \
}

#define ON_LEAVE(obj, fun) \
{ \
	(obj)->OnLeave.function = NotifyFun(fun); \
	(obj)->OnLeave.invoker = this; \
}

#define ON_CLICK(obj, fun) \
{ \
	(obj)->OnClick.function = NotifyFun(fun); \
	(obj)->OnClick.invoker = this; \
}

#define ON_CHANGE(obj, fun) \
{ \
	(obj)->OnChange.function = NotifyFun(fun); \
	(obj)->OnChange.invoker = this; \
}

#define ON_SCROLL(obj, fun) \
{ \
	(obj)->OnScroll.function = NotifyFun(fun); \
	(obj)->OnScroll.invoker = this; \
}


//-----------------------------------------------------------------------------
// 類名: ASLControl
// 功能: 控件類定義
//       本類是所有控件的基類, 提供的抽象接口被ASLGui類調用, 通過與該類的合作
//       實現整個GUI系統. 
//       本類的核心是提供了兩個級別的事件處理能力. 第一級是控件級, 本類提供了
//       一組事件處理虛函數, 當事件發生時會被ASLGui類調用. 各子類可以根據需要
//       改寫這些函數, 以實現各自的功能; 第二級是用戶級, 本類提供用戶處理事件
//       的函數指針. 用戶可以自己撰寫事件處理函數, 同時把函數地址賦給控件的函
//       指針. 各控件在處理完實現自身功能的事件后, 將會調用用戶的事件處理函數.
//-----------------------------------------------------------------------------
class ASLControl
{

// 構造, 析構函數
public:
	ASLControl(void);
	virtual ~ASLControl(void);

// 禁用拷貝構造函數和賦值函數, 無實現
private:
	ASLControl(const ASLControl&);
	ASLControl& operator=(const ASLControl&);



// 公有方法
public:	
	// 繪圖函數, 子類必須改寫
	virtual void Draw(void) const = 0;
	
	// 更新函數
	virtual void Update(float fDelta) {}
	
	// 是否可以獲得焦點. 獲得焦點的控件可以處理鍵盤事件
	virtual bool CanHaveFocus() const { return true; }



// 事件處理函數, 子類可根據需要改寫, 但必須在改寫函數中調用本類的同名函數
// 所傳入的鼠標指針位置是相對于程序窗口的.
public:
	// 鼠標進入
	virtual void MouseEnter(void);
	
	// 鼠標離開
	virtual void MouseLeave(void);
	
	// 鼠標移動
	virtual void MouseMove(POINT pt);
	
	// 鼠標按下
	virtual void MouseDown(POINT pt, MouseButton mb);
	
	// 鼠標彈起
	virtual void MouseUp(POINT pt, MouseButton mb);

	// 鍵盤按下
	virtual void KeyDown(DWORD dwKey, ShiftState ss);
	
	// 鍵盤彈起
	virtual void KeyUp(DWORD dwKey, ShiftState ss);
	
	// 字符按下
	virtual void KeyPress(char cKey);

	// 獲得焦點
	virtual void Enter(void);
	
	// 失去焦點
	virtual void Leave(void);



// 非虛函數, 提供公共的操作
public:
	// 創建控件, 在ASLGui類的唯一實例中注冊本控件
	void Create(void);

	// 設置父控件
	void SetParent(ASLControl *pParent);
	
	// 添加子控件
	void AddChild(ASLControl* pChild);
	
	// 刪除子控件
	void DelChild(ASLControl* pChild);
	
	// 使控件有效
	void Enable(void);
	
	// 使控件無效
	void Disable(void);
	
	// 顯示控件
	void Show(void);
	
	// 隱藏控件
	void Hide(void);
	
	// 控件坐標轉屏幕(程序窗口)坐標
	void ClientToScreen(POINT &pt) const;
	
	// 屏幕(程序窗口)坐標轉控件坐標
	void ScreenToClient(POINT &pt) const;

	// 一點是否在控件內
	bool IsPointIn(POINT pt) const;
	
	// 使控件獲得焦點
	void SetFocus(void);	
	
	// 控件是否有效
	bool IsEnabled(void) const { return m_bEnabled; }	
	
	// 控件是否可見
	bool IsVisible(void) const { return m_bVisible; }

	// 控件是否獲得焦點
	bool IsFocused(void) const { return m_bFocused; }
	
	// 設置控件距父控件左側距離
	void SetLeft(int nLeft) { m_nLeft = nLeft; }
	
	// 設置控件距父控件頂端距離
	void SetTop(int nTop) { m_nTop = nTop; }

	// 取控件距父控件左側距離
	int  GetLeft(void) const { return m_nLeft; }

	// 取控件距父控件頂端距離
	int  GetTop(void) const { return m_nTop; }

	// 設置控件寬度
	void SetWidth(int nWidth) { m_nWidth = nWidth; }
	
	// 設置控件高度
	void SetHeight(int nHeight) { m_nHeight = nHeight; }	
	
	// 取控件寬度
	int  GetWidth(void) const { return m_nWidth; }

	// 取控件高度
	int  GetHeight(void) const { return m_nHeight; }

	// 設置控件字體
	void SetFont(ASLFont &fnt) { m_pFont = &fnt; }
	
	// 設置控件字體顏色
	void SetFontColor(COLOR cl) { m_clFontColor = cl; }
	
	// 取控件字體
	ASLFont* GetFont(void) const { return m_pFont; }
	
	// 取控件字體顏色
	COLOR GetFontColor(void) const { return m_clFontColor; }
	
	// 設置控件標題
	void SetCaption(LPCSTR szCaption) { m_strCaption = szCaption; }
	
	// 取控件標題
	LPCSTR GetCaption(void) const { return m_strCaption.c_str(); }



// 用戶自定義的事件處理函數指針
// 所傳入的鼠標指針位置是相對于父控件的.
public:
	NotifyEvent OnMouseEnter;
	NotifyEvent OnMouseLeave;
	MouseMoveEvent OnMouseMove;
	MouseEvent OnMouseDown;
	MouseEvent OnMouseUp;
	KeyEvent OnKeyDown;
	KeyEvent OnKeyUp;
	KeyPressEvent OnKeyPress;
	NotifyEvent OnEnter;
	NotifyEvent OnLeave;



// 控件屬性
protected:
	ASLControl*				m_pParent;			// 父控件指針
	int						m_nLeft;			// 距父控件左側距離
	int						m_nTop;				// 距父控件頂端距離
	int						m_nWidth;			// 寬度
	int						m_nHeight;			// 高度
	bool					m_bEnabled;			// 是否有效
	bool					m_bVisible;			// 是否可見
	bool					m_bFocused;			// 是否獲得焦點
	ASLFont*				m_pFont;			// 字體
	COLOR					m_clFontColor;		// 字體顏色
	std::string				m_strCaption;		// 標題
	std::list<ASLControl*>	m_lChildren;		// 子控件鏈表

public:
	int						Tag;				// 用于用戶自定義數據

}; // ASLControl 類定義結束

//-----------------------------------------------------------------------------
// 類名: ASLWinControl
// 功能: 窗體控件類
//       本類是面板類(ASLPanel)和窗體類(ASLForm)的純虛基類, 提供了設置和使用
//       背景圖片的能力.
//       本類主要作用是作為一個控件容器. 對象的所有子控件將共享對象的有效性和
//       可見性. 由于子控件使用相對于父類的坐標系, 所有子控件將隨其父控件一起
//       移動而保持相對位置不變.
//-----------------------------------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91超碰这里只有精品国产| 欧美极品另类videosde| 久久精品在这里| 国产一区视频在线看| 日韩欧美在线不卡| 久久国产夜色精品鲁鲁99| 久久综合久久综合久久综合| 精品一区中文字幕| 国产精品传媒入口麻豆| 成人激情文学综合网| 亚洲精品午夜久久久| 欧美综合在线视频| 亚洲国产精品影院| 日韩欧美色综合网站| 色婷婷国产精品| 麻豆成人91精品二区三区| 久久久久国产成人精品亚洲午夜| 91在线观看污| 国产精品乱人伦一区二区| 欧美亚洲动漫精品| 高清在线观看日韩| 奇米色777欧美一区二区| 亚洲国产精品99久久久久久久久| 欧美激情中文不卡| 一区二区三区四区高清精品免费观看 | 日韩女优电影在线观看| 91麻豆国产香蕉久久精品| 色999日韩国产欧美一区二区| 亚洲成人中文在线| 久久精品亚洲精品国产欧美kt∨ | 国产不卡高清在线观看视频| 成人av电影在线播放| 欧美日韩在线直播| 成人动漫中文字幕| 91香蕉视频污在线| 色综合色综合色综合色综合色综合| 久久电影网站中文字幕| 成人夜色视频网站在线观看| 国产精品高潮久久久久无| 国产精品久久久久久亚洲毛片| 亚洲国产激情av| 亚洲精品伦理在线| 日韩精品一卡二卡三卡四卡无卡| 欧美性受xxxx黑人xyx性爽| 欧美二区三区91| 成人综合在线观看| 日本韩国精品在线| 日韩视频免费直播| 日本一区二区三区四区| 亚洲精品乱码久久久久| 亚洲一二三区不卡| 激情国产一区二区| 色综合天天综合狠狠| 日韩成人精品视频| 国产精品香蕉一区二区三区| 国产精品系列在线| 午夜精品福利一区二区蜜股av| 日韩精品一区在线观看| 亚洲国产精品99久久久久久久久| 久久久www成人免费毛片麻豆| 亚洲二区视频在线| 国产精品18久久久久久久久久久久 | 国产成人亚洲精品青草天美| 91蜜桃网址入口| 日韩免费看的电影| 亚洲美女视频在线| 国产另类ts人妖一区二区| 欧美性生活久久| 久久视频一区二区| 日韩精品欧美精品| 91亚洲永久精品| 久久久天堂av| 久久精品国产在热久久| 成人性生交大片免费看视频在线| 国产成人av影院| 2024国产精品| 天天做天天摸天天爽国产一区| 成人av动漫网站| 日本一区二区视频在线| 卡一卡二国产精品| 欧美午夜精品一区二区蜜桃| 中文字幕精品综合| 国产精品一品二品| 日韩视频免费观看高清在线视频| 亚洲成人激情自拍| 色婷婷久久久久swag精品| 日韩一区二区三区高清免费看看| 亚洲一区国产视频| 中文字幕av一区 二区| 奇米影视一区二区三区小说| 欧美综合一区二区| 一区二区三区在线播| 极品尤物av久久免费看| 久久蜜桃av一区二区天堂| 国内精品伊人久久久久影院对白| 欧美日韩二区三区| 丝袜亚洲另类丝袜在线| 欧美日韩一区中文字幕| 亚洲精品第1页| 色综合久久66| 亚洲摸摸操操av| 色婷婷激情综合| 自拍偷在线精品自拍偷无码专区| 欧美激情综合在线| 美日韩一级片在线观看| 精品欧美乱码久久久久久1区2区| 精品亚洲porn| 久久久久久综合| 岛国精品一区二区| 成人免费小视频| 色综合中文字幕国产| 中文字幕高清不卡| 波多野结衣中文字幕一区| 一区免费观看视频| 欧美主播一区二区三区| 日韩综合小视频| 久久综合久久久久88| 福利91精品一区二区三区| 亚洲色图色小说| 制服丝袜av成人在线看| 国产一区二区h| 国产精品大尺度| 欧美三级中文字幕在线观看| 国产精品视频免费看| 欧美日韩国产另类不卡| 久久91精品国产91久久小草| 国产精品乱子久久久久| 欧美艳星brazzers| 国产尤物一区二区在线| 亚洲女同女同女同女同女同69| 欧美日韩国产小视频| 国内久久精品视频| 亚洲成人综合在线| 精品免费国产一区二区三区四区| 成人黄色一级视频| 欧美aaaaaa午夜精品| 中文字幕免费一区| 911精品产国品一二三产区| 国产一区二区三区日韩| 亚洲一区二区视频在线| 久久久不卡网国产精品一区| 欧美人牲a欧美精品| 粉嫩av一区二区三区| 蜜臂av日日欢夜夜爽一区| 精品国产乱码久久久久久久 | 国产+成+人+亚洲欧洲自线| 五月婷婷久久综合| 中文字幕一区二区三中文字幕| 91视频免费看| 国产乱码精品一区二区三区五月婷| 亚洲福利视频一区二区| 国产日韩精品一区二区三区| 欧美一区二区在线看| 色狠狠综合天天综合综合| 国产成人精品亚洲日本在线桃色| 天天色 色综合| 亚洲一区二区美女| 国产精品久久久久久久久快鸭| 日韩美一区二区三区| 欧美午夜影院一区| 成a人片亚洲日本久久| 成人av免费在线| 成人小视频在线| 国产·精品毛片| 成人免费看视频| 丰满少妇久久久久久久| 精品一区二区三区免费播放| 久久99这里只有精品| 久久99国产精品麻豆| 精品写真视频在线观看| 亚洲高清久久久| 日韩av中文在线观看| 首页综合国产亚洲丝袜| 亚洲bdsm女犯bdsm网站| 亚洲大片在线观看| 日韩精品一区第一页| 欧美aaaaa成人免费观看视频| 蜜桃在线一区二区三区| 美女免费视频一区二区| 婷婷夜色潮精品综合在线| 婷婷成人激情在线网| 免费看欧美美女黄的网站| 免费观看久久久4p| 成人av在线资源网| 99久久精品国产精品久久| 在线观看免费亚洲| 777xxx欧美| 久久视频一区二区| 综合久久给合久久狠狠狠97色 | 91麻豆精品国产91久久久使用方法 | 久久国产精品无码网站| 国产一区激情在线| 国产成人精品亚洲日本在线桃色| 99久久精品国产麻豆演员表| 欧美无乱码久久久免费午夜一区| 欧美三级视频在线| 欧美大黄免费观看| 亚洲欧洲日韩综合一区二区| 亚洲综合丁香婷婷六月香| 日日摸夜夜添夜夜添亚洲女人|