我正在尝试用C语言编写代码(针对嵌入式应用程序),其中将存在根据当前显示的GUI屏幕调用不同功能的事件回调(通过按按钮引起)。
理想情况下,我想多次“定义”如下函数:keyXPressed()并在代码的不同部分编写不同的动作(例如在Screen1上执行此操作,在Screen2上执行该操作),以便单个回调始终引用一个目前在。 我知道函数的多个定义可能不是这样,大概会涉及一些面向对象的技术。
以简单优雅的方式实现这种功能的方式有哪些?

#1楼 票数:0 已采纳

使用函数指针。

void (*keyPressed)(screen *);

void keyXPressed(screen *s) {
    // code here
}
void keyYPressed(screen *s) {
    // code here
}

然后可以分配keyPressed = keyXPressed; keyPressed = keyYPressed; ,然后调用keyPressed(screen1);

  ask by unknown translate from so

未解决问题?本站智能推荐:

2回复

替换从GtkItemFactoryEntry创建的GtkItem的回调

我正在编写一个用于修改现有UI的插件。 我想做的一件事是更改现有菜单项的功能。 所有这些都使用Gtk库。 菜单项( GtkItem )是从GtkItemFactoryEntry创建的(这不在我的控制范围之内),并且其当前行为由GtkItemFactoryEntry的回调定义。
3回复

除了UI编程的回调之外,还有其他选择吗?

假设我有几个步骤,例如在软件安装过程中。 每个步骤都会显示一个文本框,并等待用户单击“下一步”按钮。 标准的方法是有这样的回调: 当需要执行很多步骤时,由于必须将进程划分为每个连续的回调函数(更不用说将上下文保存到另一个函数中),因此该技术使代码变得不可读。 有什么更容
7回复

是否将整数值转换为void *是回调中经常使用的范例?

而不是将实际的指针发送给值,而是将值强制转换为指针。 我在GTK程序的GUI界面代码中找到了这些示例。 在上面的示例中,我指的是g_signal_connect的最后一个参数。 当GTK2调用on_paste_button_pressed , on_paste_button_pres
1回复

Matlab onclick回调执行功能

我希望Matlab执行将我单击的特定点作为输入的函数,例如,如果我绘制 然后单击一个特定点(见图),它将执行一个回调函数,该函数的输入不仅是该点的x,y坐标,而且是其索引值(即变量xy的第4行) 非常感谢!
1回复

MATLAB GUI中没有回调?

我当前正在编程一个GUI,以显示有关机械手的信息,当我右键单击该GUI中的任何组件时,似乎找不到回调函数。 我制作了其他一些GUI,以前没有遇到过这个问题,而且在Google上似乎找不到任何人遇到相同的问题。 这是我的意思的示例: 有谁知道如何解决这一问题?
2回复

是否可以在WindowButtonMotionFcn中使用多个回调?

我创建了一个类,它可以为构造中的图形添加功能。 该类为WindowMouseMotion事件创建一个监听器; 但是, WindowButtonMotionFcn此事件触发,我必须为该图的WindowButtonMotionFcn属性添加一个虚拟回调函数。 我首先检查是否已填充此属性。 如
1回复

在Matlab中回调共享数据

我已经在Matlab中的几个回调选项之间共享数据,但是到目前为止没有成功。 我有一个带有多个表的gui,可用来从用户那里获取输入。 我对不同的表有多个回调函数。 我想使用表1和回调1中的数据,以及回调2中表2中的日期。 谁能帮忙。 我尝试了Matlab帮助,但其中的建议无效(也许
1回复

Matlab GUI中的嵌套蓝牙回调

我知道Matlab GUI回调已经在这里讨论了数百次,但是我认为我遇到了一个特殊问题。 我知道如何在不同的GUI回调之间共享数据(我使用文档中所述的handles-structure)。 我使用GUIDE创建了GUI。 有一个按钮可以在其回调函数中创建一个蓝牙句柄,效果很好。 建