SwiftForth-linux有一个严格的CLI界面,因此尝试编写代码来创建自定义窗口需要像GTK+这样的东西,并且我使用了它。
我的问题在于回调程序。编写接受按键的代码需要适当的回调以使用适当的signal_connect函数。
在将C代码翻译为Forth时,我仍然有一个涉及event_key结构的绊脚石,我需要按下该键的代码。
我认为(但我可能错了)GTK +系统会创建它并将地址传递给我以插入变量并稍后使用,但这是如何实现的?
在几个例子中,我没有提到事件*或类似返回的任何事情。是否有一个widget函数,它将返回event_key结构的地址?
我几乎就在那里,但我需要精通GTK +和C(以及希望Forth)的人的一些帮助,任何提示都会受到赞赏。
TCG
响应第一条评论:我需要访问event_key结构来提取按下的键的键码。如何呈现给回调函数对我来说是个谜。
我的部分问题是,为了将C函数转换为Forth,我需要理解像G_CALLBACK()这样的函数的内部工作原理。我看到的用于接收按键的代码将GtkWidgit *和GtkEventKey *作为处理程序的输入参数。例如,
static gboolean key_event(Gtk_Widget *widget, GdkEventKey * event)
我可以编写一个自定义包装器,在执行处理程序之前将这些参数放在返回堆栈上,但这是GTK +所期望的吗?
另外一个:"指向函数的指针"该术语可以以混乱的方式使用。是吗="功能的地址"或"包含函数地址"?
的变量的地址