新手,labwindows cvi的gui编程,键盘方向键选择gui界面的控件
编写的程序在电脑上用鼠标操作的时候很方便,但是装在仪器上,用仪器的方向键操作来选中控件的时候就出现随机选中某个控件的情况,用起来就有点难受了,如何改进,可以使用键盘的方向...
编写的程序在电脑上用鼠标操作的时候很方便,但是装在仪器上,用仪器的方向键操作来选中控件的时候就出现随机选中某个控件的情况,用起来就有点难受了,如何改进,可以使用键盘的方向键来选中gui界面的控件(比如文本框,下拉列表之内的)。另外cvi是如何响应键盘事件的
还有几个问题想要请教:
1,如何控制某些控件不被tab选中,但是不影响控件的其他功能?或者说可以使用tab选中面板中某个范围里的控件,范围外面的控件不能被选中。
2,用ATTR_CTRL_TAB_POSITION属性设置控件的语句是不是:SetCtrlAttribute(panel句柄,控件句柄,ATTR_CTRL_TAB_POSITION,14),最后这个14是.h文件中的定义的TAB光标的下一个控件ID?
3.是否可以给一些诸如下拉列表设置快捷键?
4,我们使用鼠标点击Ring控件的时候,能够弹出Ring的下拉列表,使用键盘能否完成同样的工作?
十分感谢您! 展开
还有几个问题想要请教:
1,如何控制某些控件不被tab选中,但是不影响控件的其他功能?或者说可以使用tab选中面板中某个范围里的控件,范围外面的控件不能被选中。
2,用ATTR_CTRL_TAB_POSITION属性设置控件的语句是不是:SetCtrlAttribute(panel句柄,控件句柄,ATTR_CTRL_TAB_POSITION,14),最后这个14是.h文件中的定义的TAB光标的下一个控件ID?
3.是否可以给一些诸如下拉列表设置快捷键?
4,我们使用鼠标点击Ring控件的时候,能够弹出Ring的下拉列表,使用键盘能否完成同样的工作?
十分感谢您! 展开
2个回答
展开全部
1、在用Tab键移动光标时,是按照 CVI自动根据.uir文件生成的那个.h文件中定义的控件ID移动的,打开那个.h文件你会看到#define PANEL 1 #define PANEL_…… n(n是整数,为控件ID),光标就是在可被光标选中的控件间按照这个ID顺序循环移动的。
3、初始化时做一下SetCtrlAttribute用ATTR_CTRL_TAB_POSITION属性设置控件,可以定义按TAB键时光标移动顺序。
2、CVI对键盘事件的响应是在面板的回调函数中case EVENT_KEYPRESS:下,该函数的参数eventData1即为键值的组合,vk=eventData1&VAL_VKEY_MASK; 即可得到方向键等虚拟键的键值,具体可参考CVI帮助文档索引EVENT_KEYPRESS
水平有限,先说到这吧。
3、初始化时做一下SetCtrlAttribute用ATTR_CTRL_TAB_POSITION属性设置控件,可以定义按TAB键时光标移动顺序。
2、CVI对键盘事件的响应是在面板的回调函数中case EVENT_KEYPRESS:下,该函数的参数eventData1即为键值的组合,vk=eventData1&VAL_VKEY_MASK; 即可得到方向键等虚拟键的键值,具体可参考CVI帮助文档索引EVENT_KEYPRESS
水平有限,先说到这吧。
追问
还有几个问题需要请教,见问题补充,谢谢您!
追答
对于问题补充:
1、由于具体下来比较长,对于控制Tab键移动范围,以及用键盘方向键“↑ ↓ ← →”键移动光标选中控件,我写了一篇图文结合的博文 http://blog.sina.com.cn/s/blog_641e05f40101b2nv.html ,有兴趣可以参考。
2、ATTR_CTRL_TAB_POSITION属性的设置格式是:SetCtrlAttribute(panel句柄,控件ID,ATTR_CTRL_TAB_POSITION,n),n是从0开始的非负整数序列,要自定义。当给一系列控件设置该属性时,按Tab键将按照n的值从小到大一次移动光标。更好的方法还是直接改控件ID,但是不能手动在 .h 文件中该,编辑控件的Tab Order可以让CVI自动按顺序改控件ID。见1中链接博文。
3、该问题在更改CVI控件默认属性中没有找到,可以在panel回调函数中EVENT_KEYPRESS下用代码来实现,只是按键后只会激活Ring控件的Label,并不会弹出选值序列,效果跟在Label框中命名控件时(__A),然后运行时按Alt + A 效果一样。
4、尚未找到合适的简单解决方案,建议你多到NI的Labwindows/CVI论坛或其他的labwindows论坛看一看。
有问题可继续一块儿探讨。
望采纳。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询