为了便于进行仪器拼搭和使用,VMIDS开发系统还提供了一些辅助功能。例如当一个仪器需要多个智能虚拟控件时,需要对这些智能虚拟控件进行合理的编排,需要使这些控件的大小一致(或成比例),对整齐、整体平移等,图10-33是对4个按钮进行大小一致性的编辑,图10-34是对4个按钮进行对齐编辑。图10-35是4个按钮进行大小一致性和对齐的编辑效果。
图10-33 对按钮进行大小一致性的编辑
图10-34 对按钮进行对齐编辑
图10-35 对按钮进行大小一致和对齐编辑
此外,还有设置仪器背景颜色设置、仪器运行/编辑状态设置、功能库分析、仪器保存与装载、仪器创建等。下面以上述三个辅助工具为例,说明其实现。
选择拼搭场内的虚拟控件,可以点选,也可以框选。所谓点选,就是由鼠标单击选取,当鼠标在相应的虚拟控件上单击时,该控件即被选中,并以深色外边框显示,按住“Shift”可多次选择选取多个控件;当在已选取的控件上再次单击时,则取消选取。而框选,则表示按住鼠标左键不放,在拼搭场内移动,则鼠标按下的第一点到鼠标弹起时的点这两点之间的区域即为所选区域,在这一区域中的控件均被选区。这里主要介绍框选。框选首先用到如下系统函数:
EnumChildWindows(HWND hWndParent,WNDENUMPROC lpEnumFunc,LPARAM lpParam);其中,hWndParent为框选区域所在窗口句柄,lpEnumFunc为自定义的回调函数,lpParam为回调函数参数。于是对于框选来讲,hWndParent为拼搭场窗口句柄,并定义回调函数为
BOOL CALLBACK EnumWindows(HWND hWnd,LPARAM lpParam)其中,hWnd为hWndParent窗口的子窗口句柄,lParam为框选区域,为Crect类型,即EnumChildWindows函数中的lParam参数。EnumWindows将得到hWndParent窗口的所有子窗口句柄。EnumWindows函数的实现如下:
BOOL CALLBACK EnumWindows(HWND hWnd,LPARAM lpParam)
{(www.xing528.com)
CRect∗rect=(CRect∗)lpParam;//框选区域
CRect rect0;
CWnd∗pWnd=CWnd::FromHandle(hWnd);//子窗口
pWnd->GetWindowRect(&rect0);//子窗口区域
if(rect->PtInRect(rect0.TopLeft())&&rect->PtInRect(rect0.BottomRight()))
{
SaverWnd(pWnd);//子窗口在框选区域内,则保存该虚拟控件的子窗口
}
return TRUE;
}
在得到所选控件的窗口指针之后,剩下的操作就非常简单了,这里不再介绍。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。