我正在尝试编写一个函数,该函数将等到用户单击 GTK+ 小部件(类似于绘图区域)中的某个位置并返回鼠标坐标。该函数的行为应该是模态的,因为它一直等到接收到输入。熟悉 Windows API 的人可能会发现该TrackPopupMenu
功能与等待菜单项被选中的功能有些相似。
我在这里尝试做的类似于使用 Windows API 运行“辅助消息循环”。在 GTK+ 中它是如何完成的?
我正在尝试编写一个函数,该函数将等到用户单击 GTK+ 小部件(类似于绘图区域)中的某个位置并返回鼠标坐标。该函数的行为应该是模态的,因为它一直等到接收到输入。熟悉 Windows API 的人可能会发现该TrackPopupMenu
功能与等待菜单项被选中的功能有些相似。
我在这里尝试做的类似于使用 Windows API 运行“辅助消息循环”。在 GTK+ 中它是如何完成的?
您可以调用gtk_main_iteration_do(FALSE);
以“泵送”GTK+ 事件系统,而不用 ( FALSE
) 阻塞应用程序。
对于 GtkWindow,使用gtk_window_set_modal可以成为模态,而不是 GtkWidget。这是有道理的,否则如果没有弹出窗口,用户将不知道要与什么进行交互。