C/C++ EasyX 循环队列 GUI按钮组件

  用EasyX写了一个按钮组件,包括他的外观和响应。。。其他的组件也能写,以后有空慢慢写吧。
  以下是第一版代码,有点简陋而且不完善,哈哈哈。
1.禁止在按钮触发事件中加入Sleep这样的函数,会导致鼠标和键盘都检测不到了
2.为什么会那样,因为我用的其实还是那套while轮询的东西。。。必须运行完了触发事件才会继续检测输入
3.加入了超椭圆

头文件

//头文件:UI_set.h
#ifndef _H_UI_SET
#define _H_UI_SET

#define WIDTH 600//画面宽度
#define HEIGHT 480//画面宽度
//背景色
#define BACKGROUND_COLOR_RED 80
#define BACKGROUND_COLOR_GREEN 80
#define BACKGROUND_COLOR_BLUE 80
//背景模式
#define BACKGROUND_MODE 200 //透明
//#define BACKGROUND_MODE "OPAQUE" //不透明


void InitEasyx(void);//初始化绘图环境
void superCircle(int R, int Center_x, int Center_y, double n, int Color[3]);//超椭圆

#endif
//头文件:UI_component.h

#ifndef H_UI_COMPONENT
#define H_UI_COMPONENT

class Button
{
   
	public:
		bool mark;//自定义标志位,默认false
		int point[2];//按钮在画面中的位置【左上角】
		int Width;
		int Height;

		TCHAR text[20];//按钮文字
		int font_size;//文字大小
		int dx;int dy;//文字相对于按钮的位置
		int textRGB[3];//文字颜色

		int bgRGB[3];//按钮背景颜色

		int ID;//按钮ID,自动设置,不要修改
		bool active;//激活按钮事件,设置响应事件后需要开启【暂时没用】

		void Create(int w,int h, int loc_x, int loc_y);//创建按钮,注册点击事件
		void Draw(void);//重绘按钮
		void CreateTask(bool leftClick, bool (*efun)(Button *e));//注册任务
		bool (*Click)(Button *e);//按钮点击事件

		Button();//构造函数
		~Button();//析构函数
};

#endif
//头文件:workstream.h

#ifndef _H_WORKLIFE
#define _H_WORKLIFE

void startWork(void);//开启工作流
void initWork(void);//初始化工作流
int addKeyListener(char e, bool efun());
int addMouseListener(int up,int down,int left, int right, Button *e, bool isLeft);
bool DelWkNode(int _id);

/******************************************************* 
 * 监听事件队列【无头结点】 
 * 注册鼠标点击事件时必须传入一个Button实例
*******************************************************/
typedef struct listen{
   
	unsigned int _task_id;

	//监听对象只有两个,一个是鼠标,一个是键盘
	bool isMouse;

	//鼠标事件响应条件
	int up;
	int right;
	int down;
	int left;

	bool isMouseLeft;
	//bool MouseHover;//还没想好。。。

	//键盘事件响应条件
	char key;

	//响应事件
	bool (*KeyFun)();//键盘事件
	//bool (*MouseHoverFun)();//悬浮事件
	Button *btn;

	listen *next;
}Listen, *listenList;

#endif

实现

//initEasyX.cpp
#include <graphics.h>  
#include "UI_set.h"
#include <math.h>
/* 画布初始化 */
void InitEasyx()
{
   
	initgraph(WIDTH, HEIGHT);//新建画布
	setbkcolor
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值