工具中添加某一个控件的一般步骤(也适用其他项目的测试工具)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_17017545/article/details/79637708

注:在此以GTNMD中的Fall Detection(跌落检测)控件为例,
ID号为 IDC_EDIT_GTNMD_FALL_DETECT

1. 在VS中的资源视图中可视化编辑控件,主要是控件的ID以及其他一些属性,编辑好之后保存就会在ConfigTool.rc和resource.h中生成相关代码

2.如果别的项目工具中有这个控件,我们只需要把控件的ID放在工具源码中搜索下,看哪些地方用到了控件的ID.如果没有,此次按照以下步骤添加

3.通过在两个项目工具源码中搜索控件ID对比差异,除了ConfigTool.rc和resource.h两个文件中都用到到ID,还需要在SerialCfg.cpp 文件中的的 OnCheckGtnmd函数中添加
GetDlgItem(IDC_EDIT_GTNMD_FALL_DETECT)->EnableWindow(isEnabled);
作用是让这个控件受 GTNMD中的 Enable This Function 复选框的控制
以及添加 sprintf(strCfgPara[10],"0");
作用是 当点击Enable This Function 复选框后,为此控件设定一个初始值。

4.在SerialCfg.cpp 文件中的的 GetGtnmdPara函数中添加

sprintf(cmdPara[10],"%X",((CButton*)GetDlgItem(IDC_EDIT_GTNMD_FALL_DETECT))->GetCheck());

作用是把当前控件中的数据存储到数组中去

5.在SerialCfg.cpp 文件中的的 SetGtnmdPara函数中添加

((CButton*)GetDlgItem(IDC_EDIT_GTNMD_FALL_DETECT))->SetCheck(atoi(cmdPara[10]));

作用是把数组中的数据显示到对应的控件中

6.在SerialCfg.cpp 文件中的的 CtlColorNmd函数中添加

case IDC_EDIT_GTNMD_FALL_DETECT:
if(isHiLite = 1 & m_pcfgProcess->isCheckError[CFG_CHECK_CMD_NMD]>>10)
{
    pDC->SetTextColor(RGB(255, 255, 0));
    pDC->SetBkColor(RGB(255, 0, 0));
}
break;

作用是当控件中的数据越界时提供变色功能。

通过对比搜索结果能改的就上面几条,除此之外,还有以下几条需要修改

7.在CfgProcess.cpp 文件中的 CheckNmdPara函数中添加

if(!isAllDigit(para[10]) || atoi(para[10])>1)//fall detection
    isCheckError[CFG_CHECK_CMD_NMD] |= 1<<10;

作用是第6条中变色功能提供越界检测并标记。

8.在CfgProcess.cpp 文件中的 CfgMakeGtnmd函数中添加 cmdPara[10] ,并在对应位置添加“%s”作用是将每个区域的控件的数据集中显示到下面的AT命令行中。

9.在在SerialCfg.cpp 文件中的的 消息映射表中

BEGIN_MESSAGE_MAP(SerialCfg, CDialog)
    ON_CONTROL_RANGE(EN_CHANGE, IDC_GTNMD_READ+1, IDC_EDIT_GTNMD-1, OnGtnmdChange)
    ON_CONTROL_RANGE(BN_CLICKED, IDC_GTNMD_READ+1, IDC_EDIT_GTNMD-1, OnGtnmdChange)
END_MESSAGE_MAP()

正常情况下,我们添加的控件的ID是不在 IDC_GTNMD_READ 与 IDC_EDIT_GTNMD 范围内的,在resource.h中,搜索ID,将其移动到范围内,并使这前后的数字连续。作用是当这个范围内的任意一个控件内的数据变化时,就回执行响应函数OnGtnmdChange() ,将变化后的数据及时显示到下方的AT命令行中。

如果生成解决方案不成功,可能需要先清理解决方案,重新生成解决方案!

猜你喜欢

转载自blog.csdn.net/qq_17017545/article/details/79637708
今日推荐