私は現在、人々が学ぶためのC言語のオープンソースゲームエンジンに取り組んでおり、マウスクリック、キープレスなどを介してUIシステムへの入力を行う最良の方法は何だろうと思っていました.
現在、関数ポインターを使用して、ユーザーが関数を設定する場所に ui システムの入力があります。
button1.mousepress = button1_press;
ユーザーがボタン1をクリックすると、ループしてボタン1を見つけ、ボタン1のクリックイベントを実行します。ただし、コントロール内のイベントに移動してから、ユーザー コントロールに移動する必要があります。関数ポインターをセットアップする方法は次のとおりです。
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に移動します。シンスを行うための最良の方法は何かについてのアイデア。私の友人は連鎖を提案しましたが、連鎖がどのように機能するかを理解できませんでした....
これを読んでくださった方、そして助けてくださった方に感謝します。