我目前正在开发 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。关于什么是做瘦的最佳方法的任何想法。我的一个朋友建议使用链接,但我无法弄清楚链接是如何工作的......
感谢您阅读本文的任何人,也感谢那些愿意提供帮助的人。