下面是建立完工程文件后,用例节点的xml文件,为了方便理解节点的数据结构:
图1中,在添加命令时,工具会自动根据父节点,也就是命令组的type自动在新建的对话框中选择类别的名字,如图2中的类别根据父节点UE桩自动选择了UE_STUB(UE桩),并会读取XML配置文件(图4)中UE_STUB类别下的消息体,生成命令的下拉菜单,sendmsg/receivemsg/caseend 3种命令名,选择完命令名之后又会自动读取XML文件(图5)显示消息ID,如图2,在最后选择消息名之后就会形成下图中的XML文件(图6)。
3.4 用户界面设计
3.4.1 主界面设计
本工具的开发平台是Visual Studio 2010,VS中可以根据MFC应用程序向导自动生成一个选项卡式多文档界面(MDI)(如下图1),工具的主界面的开发就是基于模版修改完成的,最终形成主界面如下图2。
主要改动的有3个试图,分别为工程视图,属性视图,用户指令试图。
(1)工程视图:
工程视图是3个视图中最主要的部分,主要修改的是读取并显示工程文件和根据节点的属性设置右键菜单这两部分。
①读取并显示工程文件
创建好MFC模版之后,工程试图的文件名为FileView,在这个.CPP和.h文件下进行修改,使其初始化和目标样式相同。
首先将FillFileView函数下的代码删除,此函数是在工程视图初始化时填充视图的树结构,均是写死树节点名称的,而工具所要求的是读取已有的工程文件根据文件中的节点名称显示,所以全部删除。
在打开工程的函数下编写类似下面的代码:
HTREEITEM hRoot = m_wndFileView.InsertItem(_T("FakeApp”), 0, 0);
m_wndFileView.SetItemState(hRoot, TVIS_BOLD, TVIS_BOLD);
HTREEITEM hSrc = m_wndFileView.InsertItem(_T("FakeApp”), 0, 0, hRoot);
m_wndFileView.InsertItem(_T("FakeApp.cpp"), 1, 1, hSrc);
m_wndFileView.InsertItem(_T("FakeApp.rc"), 1, 1, hSrc);
HTREEITEM hInc = m_wndFileView.InsertItem(_T("FakeApp”), 0, 0, hRoot);
m_wndFileView.InsertItem(_T("FakeApp.h"), 2, 2, hInc);
m_wndFileView.InsertItem(_T("FakeAppDoc.h"), 2, 2, hInc);
HTREEITEM hRes = m_wndFileView.InsertItem(_T("FakeApp”), 0, 0, hRoot);
m_wndFileView.InsertItem(_T("FakeApp.ico"), 2, 2, hRes);
m_wndFileView.InsertItem(_T("FakeApp.rc2"), 2, 2, hRes);
m_wndFileView.Expand(hRoot, TVE_EXPAND);
m_wndFileView.Expand(hSrc, TVE_EXPAND);
m_wndFileView.Expand(hInc, TVE_EXPAND);
首先用loadfile读取已有的工程XML文件,用tinyxml库函数递归遍历xml文件并将节点名读取出来,然后利用FileView类中提供的对象,m_wndFileView对树节点的显示进行操作,用InsertItem依次插入从XML文件中读取的节点名,并给每个节点赋值以便之后设置每个节点的右键菜单。
②设置右键菜单
在工具栏里找到资源视图,在MENU中新建需要的右键菜单,包括需要功能和快捷键。
在FileView类的OnContextMenu函数中根据上面给每个节点的赋值来区分节点的属性,利用类似如下代码设置该节点需要的右键菜单(修改IDR_POPUP_EXPLORER这种右键ID)
theApp.GetContextMenuManager()->ShowPopupMenu(IDR_POPUP_EXPLORER, point.x, point.y, this, TRUE)
(2)属性视图:
属性视图是3个视图中修改的最少的一个。在CPropertiesWnd类下的InitPropList函数根据读取的工程文件来显示每个的属性 基于TD-SCDMA的物理层集成测试工具的研究与实现(9):http://www.751com.cn/tongxin/lunwen_4068.html