- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
LabWindows/CVI虚拟仪器设计技术场景与游戏设计之: 移动控件
4.1 移动控件
4.1.1 移动控件设计方法
在应用程序中,面板是可以拖拽的,其他控件因不具备Movable 属性而不能移动。通常情况下,在运行时,控件设计好后很少会被移动到其他位置或者改变大小尺寸,而在程序设计阶段却需要经常改变。在程序运行期间,某些控件会影响界面的美观性,希望把它们挪个位置,以使界面更完美。对于一些游戏类开发,控件的移动是必需的功能,而且需要支持键盘和鼠标移动控件。LabWindows/CVI 在…CVIxxtoolslibcustctrl 目录下提供了movectrl.h 、movectrl.c 、movectrl.fp 、movectrl.sub 等文件,可以在运行时状态方便地拖拽控件,改变位置与大小。
对于一般开发工具而言,如Visual Basic 控件具有MouseDown 事件,可在其中用全局坐标变量OldX 和OldY 记录下鼠标按下时的位置,并使全局布尔型变量标识为True 用以标志鼠标被按下。在控件的MouseMove 事件中,如果标识为True ,则使该控件的左边界在原来的基础上加上水平方向的移动量(x - OldX) ,上边界在原来的基础上加上垂直方向的移动量(y - OldY)。在MouseUp 事件中,使标识变为False,表示鼠标已松开。在LabWindows/CVI 中,由于鼠标不支持MouseDown 事件,主要采用相近的鼠标事件EVENT_MOUSE_POINTER_MOVE 和EVENT_LEFT_CLICK 来记录OldX 和OldY,为控件的鼠标拖拽操作提供了一种思路。
4.1.2 移动控件程序设计
(1)面板设计
编写一个运行程序时,利用鼠标调整Graph 控件的大小和位置,当鼠标放置于控件内时,显示手形,此时可以按下鼠标左键移动控件,当鼠标放置于控件右侧、下侧或右下角时,显示箭头形状,按下鼠标左键拖拽控件,可改变控件的大小尺寸。控件移动采用面板回调函数实现,控件尺寸改变采用Timer 定时器控制实现。面板设计如图4-1 所示,面板中主要控件属性设置如表4-1 所示。
图4-1 移动控件面板
表4-1 控件属性设置表
常量名 | 控件类型 | 控件的主要属性 |
PANEL | Panel | 标题:移动控件回调函数:PanelCB |
GRAPH | Graph | 标题:移动控件 |
TIMER | Timer | 回调函数:timer Interval:0.01 |
上一篇:LabWindows/CVI虚拟仪器设计技术基本控件使用之:Ring
箭头设置
下一篇:基于NI
VeriStand和JMAG-RT进行高性能电机仿真