2

我正在尝试使用以下 C 代码将加速器添加到“播放”GTK+ 3.0 菜单项:

gtk_widget_add_accelerator(play, "activate", accel_group, GDK_KEY_F5, NULL, GTK_ACCEL_VISIBLE);

我希望在用户按下F5键时激活“播放”菜单项。但是,当我尝试编译时,出现以下错误:

/usr/include/gtk-3.0/gtk/gtkwidget.h:504:9: note: expected 'GdkModifierType' but argument is of type 'void *'

我不想添加修饰符,只需在用户按下F5键时激活菜单项。我意识到我可以将 a0作为参数传递(因为GdkModifierType它只是一个二进制掩码),但有没有比这个解决方案更受欢迎的方法——也许是一个调用的预处理器宏GDK_NONE_MASK或类似的东西?

4

1 回答 1

1

没错,您不应该将指针(例如NULL)传递给enum参数。试图这样做是错误的,这就是编译器告诉你的。

你可以逃脱惩罚0。从整数到枚举的隐式转换将开始。

更明确地说,您可以写(GdkModifierType)0为参数。

于 2013-09-21T22:45:37.223 回答