作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在将整数传递给回调函数时遇到了最困难的情况,因为 g_signal_connect
的最后一个参数必须是指针。这是我将信号连接到回调的位置:
for (i=0;i<10;i++)
{
...
gtk_widget_set_events(tab_ebs[i],GDK_BUTTON_PRESS_MASK);
g_signal_connect (G_OBJECT (tab_ebs[i]), "button_press_event", G_CALLBACK (tab_clicked_cb), GINT_TO_POINTER(i));
}
这是回调:
void tab_clicked_cb (gpointer p)
{
printf("tab #%d clicked\n", GPOINTER_TO_INT(p));
}
我在标准输出中得到的是如下语句:
tab #6578976 clicked
tab #6579264 clicked
tab #6579552 clicked
tab #6579840 clicked
当我只有十个标签时。如何在 64 位系统上将整数传递给回调 fcn?谢谢。
最佳答案
没有,我已经成功了一半。事实证明,我的回调函数中还缺少该事件的参数。这是有效的表格:
void tab_clicked (GtkWidget *widget, GdkEventButton *ev, gpointer p)
{
printf("tab #%d clicked\n", GPOINTER_TO_INT(p));
}
关于c - 64位系统,GINT_TO_POINTER(i)/GPOINTER_TO_INT(p),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13782916/
我在将整数传递给回调函数时遇到了最困难的情况,因为 g_signal_connect 的最后一个参数必须是指针。这是我将信号连接到回调的位置: for (i=0;i<10;i++) { ...
我是一名优秀的程序员,十分优秀!