LabWindows/CVI虚拟仪器设计技术场景与游戏设计之: 移动控件
3:程序注释
① GetGlobalMouseState 函数获得鼠标状态信息,包括获得相对于屏幕的鼠标坐标。函数原型为:
int GetGlobalMouseState (int *Panel_Handle, int *XCoordinate, int *YCoordinate, int *Left_Button_ Down, int *Right_Button_Down, int *Key_Modifiers);
*Panel_Handle :鼠标经过的面板句柄。如果鼠标没有经过面板,则值为0。如果不需要返回参数值,可输入NULL。
*XCoordinate:X轴坐标(相对于屏幕左侧边缘)。如果不需要返回参数值,可输入NULL。
*YCoordinate:Y轴坐标(相对于屏幕顶部)。如果不需要返回参数值,可输入NULL。
*Left_Button_Down :鼠标左键状态。0 表示左键弹起,1 表示左键按下。如果不需要返回参数值,可输入NULL 。
*Right_Button_Down :鼠标右键状态。0 表示右键弹起,1 表示右键按下。如果不需要返回参数值,可输入NULL 。
*Key_Modifiers :是否有Ctrl 、Alt 和Shift 键被按下,如果没有键被按下时值为0,否则为VAL_MENUKEY_MODIFIER 、VAL_UNDERLINE_MODIFIER 、VAL_SHIFT_MODIFIER 和VAL_SHIFT_AND_MENUKEY 按位或操作结果。常量说明如表4-2 所示。
表4-2 Key Modifiers 参数表
常量名 | 常量值 | 说明 |
VAL_MENUKEY_MODIFIER | 1L << 16 | Ctrl 键 |
VAL_UNDERLINE_MODIFIER | 1L << 17 | Alt 键 |
VAL_SHIFT_MODIFIER | 1L << 18 | Shift 键 |
VAL_SHIFT_AND_MENUKEY | (1L << 18) | (1L << 16) | Shift 键+Ctrl 键 |
② GetMouseCursor 函数返回鼠标指针形状参数。函数原型为:
int GetMouseCursor (int *Mouse_Cursor_Style);
*Mouse_Cursor_Style :鼠标指针形状值。指针形状说明如表4-3 所示。
表4-3 鼠标指针参数表
常量名 | 常量值 |
VAL_DEFAULT_CURSOR | –1L |
VAL_CHECK_CURSOR | 11L |
VAL_CROSS_HAIR_CURSOR | 12L |
VAL_BOX_CURSOR | 13L |
VAL_POINTING_FINGER_CURSOR | 14L |
VAL_OPEN_HAND_CURSOR | 15L |
VAL_QUESTION_MARK_CURSOR | 16L |
VAL_HOUR_GLASS_CURSOR | 17L |
VAL_HIDDEN_CURSOR | 18L |
VAL_SIZE_NS_CURSOR | 19L |
VAL_SIZE_EW_CURSOR | 20L |
VAL_SIZE_NW_SE_CURSOR | 21L |
VAL_SIZE_NE_SW_CURSOR | 22L |
VAL_CLOSED_HAND_CURSOR | 23L |
VAL_SIZE_EW_CURSOR_2 | 26L |
VAL_SIZE_NS_CURSOR_2 | 27L |
VAL_MOVE_CURSOR | 28L |
③ GetRelativeMouseState 函数
获得鼠标状态信息,包括获得相对于控件的鼠标坐标。如果Control_ID 为0,返回相对于面板的坐标。函数原型为:
int GetRelativeMouseState (int Panel_Handle, int Control_ID, int *XCoordinate, int *YCoordinate, int *Left_Button_Down, int *Right_Button_Down, int *Key_Modifiers);
④ SetMouseCursor 函数设置鼠标指针形状参数。函数原型为:
int SetMouseCursor (int Mouse_Cursor_Style);
⑤ 控件拖拽操作
在LabWindows/CVI 中,虽然有鼠标的拖拽操作函数,但主要是针对文件拖拽功能的EnableDragAndDrop 函数,需要为面板回调函数安装EVENT_FILESDROPPED 事件,很难用于控件的拖拽操作。在本例程中,利用GetGlobalMouseState 函数查询鼠标左键是否被按下,利用面板EVENT_MOUSE_POINTER_MOVE 事件来响应控件拖拽操作,并确定控件的新位置。对于EVENT_LEFT_CLICK 事件,只是在鼠标点击时会产生触发响应,而EVENT_MOUSE_POINTER_ MOVE 事件只要鼠标移动就会产生,具有实时响应特性,因此,拖拽操作的主要过程可以写在该事件中。EVENT_LEFT_CLICK 事件的作用是更新一次点击
LabWindows 虚拟仪器 CVI 移动控件 相关文章:
- 用于雷达测试和验证的自动化测试设备(05-15)
- 基于LabWindows的录波分析仪的设计(03-01)
- LabWindows/CVI虚拟仪器设计技术基本控件使用之: Tab 控件(11-13)
- LabWindows/CVI虚拟仪器设计技术场景与游戏设计之:时钟制作(11-13)
- LabWindows/CVI虚拟仪器设计技术场景与游戏设计之: 下雪场景(11-13)
- LabWindows/CVI虚拟仪器设计技术基本控件使用之:回调函数(11-13)