当前位置:  技术问答>linux和unix

gtk keypressevent 为什么会捕获到鼠标button消息?

    来源: 互联网  发布时间:2016-10-15

    本文导语:  我的代码中使用drawing area绘画,并将drawing area作为接受按键消息的窗口,使用如下代码绑定键盘按键消息:GTK_WIDGET_SET_FLAGS(drawing_area, GTK_CAN_FOCUS ); g_signal_connect (GTK_OBJECT(drawing_area), "key_press_event", G_CALLBACK(key_press_...

我的代码中使用drawing area绘画,并将drawing area作为接受按键消息的窗口,使用如下代码绑定键盘按键消息:GTK_WIDGET_SET_FLAGS(drawing_area, GTK_CAN_FOCUS );
g_signal_connect (GTK_OBJECT(drawing_area), "key_press_event", G_CALLBACK(key_press_event), NULL);   

gtk_widget_add_events(drawing_area,  
GDK_BUTTON1_MOTION_MASK |  
GDK_BUTTON2_MOTION_MASK |  
GDK_BUTTON3_MOTION_MASK |  
GDK_BUTTON_PRESS_MASK |  
GDK_BUTTON_RELEASE_MASK|  
GDK_SHIFT_MASK |  
GDK_CONTROL_MASK |  
GDK_MOD1_MASK  |  
GDK_KEY_PRESS_MASK|  
GDK_VISIBILITY_NOTIFY_MASK);

鼠标中键、右键按下滑动都正常;左键按下正常,但是按下左键并滑动后就会进入了key_press_event消息(断点跟进发现的)。这是为什么??
跟进去发现,当鼠标左键按下滑动后,传进key_press_event的按键是“GDK_CONTROL_MASK”,相反的当我按alt键时,按键的state显示是0,这让我很奇怪……

|
因为你的gtk_widget_add_events加太多mask了,而且还是不同类型的mask混杂,通常只写一个mask
gtk_widget_add_events函数需要的是GdkEventMask,而你的代码里就混入了3个GdkModifierType类型的GDK_SHIFT_MASK、GDK_CONTROL_MASK、GDK_MOD1_MASK
由于gtk_widget_add_events只处理GdkEventMask类型,所以你的GDK_CONTROL_MASK被当做GDK_POINTER_MOTION_MASK,这2个的值是一样的
GDK_SHIFT_MASK的值是0,也就是你按alt键,但gtk_widget_add_events没有这个值
”为什么会捕获到鼠标button消息?“,因为你加的一大堆都是鼠标事件
不要加那么多,就写一个你需要的

|
那几个键要用gdk_keymap_translate_keyboard_state,不能加在这里

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • gtk中怎么响应鼠标双击事件呀??
  • 在gtk 中如何屏蔽鼠标双击事件
  • gtk怎样将鼠标隐藏
  • GTK编程,如何设置及获取鼠标滚动条滚动事件
  • gtk中的鼠标事件处理?
  • gtk+中鼠标移动到button上触发什么事件
  • gtk中的TextView里面用鼠标选中一段字符后怎样将选中的字符串放到剪切板里面?
  • 用GTK如何用键盘代替鼠标?
  • GTK+鼠标事件问题
  • 关于GTK中gtk_widget_hide()的问题 iis7站长之家
  • Redhat linux9.0 下Gtk+编程的#include <gtk/gtk.h>问题
  • 【重要】gtk+ 编译gtk+的问题,不同于一般gtk的搭建--1000分,问题解决了,开号给分,决不食言!大家都来看看
  • gtk 和 gtk+ 有什么区别?
  • centos5.4中安装gtk时,yum库最新版是gtk2.10,如何更新yum库安装gtk2.12
  • 我使用GTK+2.0写界面程序时,怎么找不到gtk.h文件?
  • GTK+ gtk_tree问题
  • gtk for win 和 gtk for linux 下的程序问题?
  • GTK窗口前端显示及GTK窗口闪烁
  • 用GTK开发的程序如何在没有GTK动态连接库的Linux里运行?
  • 【GTK】GTK中有没有这个widget?
  • 我想学习GTK+2.0,请问如何准备GTK编程环境???
  • [GTK] gtk最小化问题与恢复问题
  • 【gtk+】初学gtk+,请教一个问题
  • 【gtk】关于gtk布局问题
  • 本人刚学gtk编程,留下油箱,欢迎喜欢gtk编程的朋友和我交流啊!!!!
  • 大家好,想知道gtk与gtk+有什么区别?
  • 关于GTK中gtk_widget_hide()的问题
  • gtk编程问题,如何在一个线程中向gtk控件发送一个expose_event消息
  • gtk中如何获取gtk_text_view中的输入内容?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3