gpt4 book ai didi

c - GTK3:获取鼠标滚动方向

转载 作者:行者123 更新时间:2023-12-02 13:45:38 24 4
gpt4 key购买 nike

我刚刚将一个 C 程序从 GTK2 移植到 GTK3。该程序使用一个 GtkDrawingArea 来使用鼠标滚轮。切换到 GTK3 后,我无法再正确检测滚轮的使用情况。这是我所做的和得到的:

GTK2 (2.24.10)

  1. 我将GtkDrawingArea 的事件掩码设置为GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_BUTTON_RELEASE_MASK | GDK_LEAVE_NOTIFY_MASK
  2. 我将信号处理程序连接到 GtkDrawingAreascroll-event
  3. 一旦我使用滚轮,就会调用信号处理程序,并且 GdkEventScroll 的属性 directionGDK_SCROLL_UP GDK_SCROLL_DOWN

GTK3 (3.4.2)

  1. 除上述内容外,我还在 GtkDrawingArea 的事件掩码中添加了 GDK_SMOOTH_SCROLL_MASK。如果没有它,我的信号处理程序永远不会被调用。
  2. 我使用与上述相同的信号处理程序。
  3. 一旦我使用滚轮,就会调用信号处理程序,并且 GdkEventScroll 的属性 directionGDK_SCROLL_SMOOTH。调用 gdk_event_get_scroll_deltas() 时,delta_xdelta_y 的值始终为 0。除了 GDK_SCROLL_SMOOTH 之外,我从未见过任何其他方向。

尽管我的鼠标本身仅传递“离散”button4/5 事件,但我可以接受平滑的滚动事件,但如何确定滚动事件的方向?

顺便说一句:我在 amd64 上使用 Ubuntu 12.04。

最佳答案

有一个bug在 Gtk3 中与“滚动事件”信号相关。首先,在回调中,您应该使用 GdkEventScroll 结构的 delta_x 和 delta_y 成员。其次,第一次滚动鼠标时,这些成员都将为零(错误!)。后续滚动将为您提供正确的值。第三,不幸的是,这个错误似乎不会被修复。

关于c - GTK3:获取鼠标滚动方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11775161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com