为GUI输入执行函数指针的更好方法是什么?

时间:2013-02-06 22:56:26

标签: user-interface input widget controls function-pointers

我目前正在使用C语言中的开源游戏引擎供人们学习等等,我想知道通过鼠标点击,按键等方式为UI系统输入的最佳方法是什么。

目前我使用函数指针输入ui系统的输入,用户可以设置一个函数。

button1.mousepress = button1_press;

然后,如果用户单击button1,它将循环查找按钮1,然后执行button1的单击事件。但是我需要它去控件内部的事件然后到用户控件。我有函数指针设置的方式如下。

struct widget
{
//contains control special data
void *control;

//contains the parent of the widget.
widget *parent;

//contains events for quick calling
void(*draw)(widget *);
void(*mousepress)(widget *,int,int);
void(*mouserelease)(widget *,int,int);
void(*mousewheel)(widget *,int);
void(*keypressed)(widget *,int,int);

//hidden and shown arrays
widget_array shown;
widget_array hidden;

vector2ui pos;
vector2ui actualpos;
vector2ui originalpos;
vector2i imgpos;
image img;
uint16 width;
uint16 height;
uint8 type;
sbool action;
};

正如你所看到的那样,函数指针目前不是通用的,所以如果我必须使它们通用我会。除此之外,设置函数指针的最佳方法是允许它们进入gui控件事件然后转到用户制作 的 button1.mousepress 即可。关于做什么的最佳方法的任何想法都是。我的一个朋友建议Chaining,但我无法弄清楚链条是如何工作的......

感谢所有阅读此内容的人,并感谢那些愿意帮助的人。

0 个答案:

没有答案