关于测试工程提示信息功能的说明

关于测试工程提示信息功能的说明

该功能的实现完全依赖于CPPToolTip类,该类可以在 http://www.codeproject.com/ 上下载到。具体说明见该网站的介绍。
本程序所需要的功能是点击工具栏的“属性”按钮之后,屏幕右下角弹出测试工程的详细属性。在屏幕任何地方单击鼠标左键之后,信息提示框消失。
因此,本程序没有直接按照codeproject上的介绍那样使用CPPToolTip类,而是当点击“属性”按钮之后,调用ShowHelpTooltip函数。
在ShowHelpTooltip函数的重载版本void ShowHelpTooltip (LPPOINT pt, LPCTSTR lpszString, HICON hIcon = NULL)中,lpszString支持HTML文本,因此可以利用HTML控制显示信息的格式。

弹出的信息提示框如下图所示。

信息提示框

源代码如下:

/**/ /// /MainFrm.h中定义
public :
CPPToolTipm_toolTip;
// 显示测试属性的提示框
/**/ /// /MainFrm.cpp中
int CMainFrame::OnCreate(LPCREATESTRUCTlpCreateStruct)
... {
……
m_toolTip.Create(
this );
// Addstooltipfortoolbar
m_toolTip.AddToolBar( & m_ProperBar);
……
}


// 显示测试工程的属性
void CEMCView::OnEditProper()
... {
// TODO:在此添加命令处理程序代码
if (m_bIsWorking && ! m_bOldVersion)
... {
CEMCDoc
* pDoc = GetDocument();

CMainFrame
* pmfrm = (CMainFrame * )AfxGetMainWnd();
pmfrm
-> m_toolTip.SetDirection(PPTOOLTIP_BOTTOMEDGE_CENTER);
pmfrm
-> m_toolTip.AddTool( this ,L " 测试文件属性 " );
// pmfrm->m_toolTip.SetColorBk(RGB(0,0,255),RGB(192,192,192));

CPointpt;
CRectrc;
GetClientRect(
& rc);
ClientToScreen(
& rc);
pt.x
= rc.right;
pt.y
= rc.bottom; // pt为客户区窗口右下角对应的点

// 利用HTML控制提示框的显示格式
// 显示测试工程属性
CStringinfo = L "" ;
CStringstr
= L " <center><h2><fontface="黑体"color=red>测试工程属性</font></h2><br><hrcolor=blue></center><br> " ;
info
+= str;
str.Format(L
" <fontsize=14>测试类型:</font> " );
info
+= str;
if (pDoc -> m_pTestPrj -> m_TestCon == CE102)
... {
str.Format(L
" <spanclass=cpp-comment>CE102测试</span> " );
}

else if (pDoc -> m_pTestPrj -> m_TestCon == RE102)
... {
str.Format(L
" <spanclass=cpp-comment>RE102测试</span> " );
}

info
+= str;
str.Format(L
" <fontsize=14>测试设备:</font> " );
info
+= str;
switch (pDoc -> m_pTestPrj -> m_TestEquip)
... {
case TEST_EQUIP_NONE:
str.Format(L
" <spanclass=cpp-comment>无</span><br> " );
break ;
case CUR_PROBE:
str.Format(L
" <spanclass=cpp-comment>电流探头</span><br> " );
break ;
case ET_G:
str.Format(L
" <spanclass=cpp-comment>ET-G</span><br> " );
break ;
case ET_Q:
str.Format(L
" <spanclass=cpp-comment>ET-Q</span><br> " );
break ;
case HT_1:
str.Format(L
" <spanclass=cpp-comment>HT-1</span><br> " );
break ;
case HT_6:
str.Format(L
" <spanclass=cpp-comment>HT-6</span><br> " );
break ;
case LISN:
str.Format(L
" <spanclass=cpp-comment>LISN</span><br> " );
break ;
case EZ_17:
str.Format(L
" <spanclass=cpp-comment>EZ-17</span><br> " );
break ;
}

info
+= str;
str.Format(L
" <fontsize=14>起始频率:</font> " );
info
+= str;
str.Format(L
" <spanclass=cpp-comment>%5.2fMHz</span> " ,pDoc -> m_pTestPrj -> m_StartFreq);
info
+= str;
str.Format(L
" <fontsize=14>终止频率:</font> " );
info
+= str;
str.Format(L
" <spanclass=cpp-comment>%5.2fMHz</span><br> " ,pDoc -> m_pTestPrj -> m_StopFreq);
info
+= str;
str.Format(L
" <fontsize=14>EUT电压:</font> " );
info
+= str;
if (pDoc -> m_pTestPrj -> m_TestCon == RE102)
str.Format(L
" <spanclass=cpp-comment>N/A</span> " );
else
str.Format(L
" <spanclass=cpp-comment>%5.2fV</span> " ,pDoc -> m_pTestPrj -> m_EUTVolt);
info
+= str;
str.Format(L
" <fontsize=14>待测设备:</font> " );
info
+= str;
if (pDoc -> m_pTestPrj -> m_EUTName != L "" )
str.Format(L
" <spanclass=cpp-comment>%s</span><br> " ,pDoc -> m_pTestPrj -> m_EUTName);
else
str.Format(L
" <spanclass=cpp-comment>N/A</span><br> " );
info
+= str;
str.Format(L
" <fontsize=14>测试模式:</font> " );
info
+= str;
if (pDoc -> m_pTestPrj -> m_TestCon == RE102)
str.Format(L
" <spanclass=cpp-comment>N/A</span> " );
else
... {
switch (pDoc -> m_pTestPrj -> m_TestMode)
... {
case TEST_MODE_NONE:
str.Format(L
" <spanclass=cpp-comment>无</span> " );
break ;
case DIFFER:
str.Format(L
" <spanclass=cpp-comment>差模</span> " );
break ;
case COMMON:
str.Format(L
" <spanclass=cpp-comment>共模</span> " );
break ;
}

}

info
+= str;
str.Format(L
" <fontsize=14>测试距离:</font> " );
info
+= str;
if (pDoc -> m_pTestPrj -> m_TestCon == CE102)
str.Format(L
" <spanclass=cpp-comment>N/A</span><br> " );
else
str.Format(L
" <spanclass=cpp-comment>%5.2fm</span><br> " ,pDoc -> m_pTestPrj -> m_TestDist);
info
+= str;

// 显示频谱仪设置
str.Format(L " <br><center><h2><fontface="黑体"color=red>频谱仪设置</font></h2><br><hrcolor=blue></center><br> " );
info
+= str;
str.Format(L
" <fontsize=14>RBW:</font> " );
info
+= str;
if (pDoc -> m_pTestPrj -> m_TestBand == 9 )
str.Format(L
" <spanclass=cpp-comment>9KHz</span> " );
else if (pDoc -> m_pTestPrj -> m_TestBand == 120 )
str.Format(L
" <spanclass=cpp-comment>120KHz</span> " );
else
str.Format(L
" <spanclass=cpp-comment>AUTO</span> " );
info
+= str;
str.Format(L
" <fontsize=14>显示模式:</font> " );
info
+= str;
switch (pDoc -> m_pTestPrj -> m_DispPattern)
... {
case SAMPLE:
str.Format(L
" <spanclass=cpp-comment>SAMPLE</span><br> " );
break ;
case MIN_HOLD:
str.Format(L
" <spanclass=cpp-comment>MIN.HOLD</span><br> " );
break ;
case MAX_HOLD:
str.Format(L
" <spanclass=cpp-comment>MAX.HOLD</span><br> " );
break ;
}

info
+= str;
str.Format(L
" <fontsize=14>内部衰减:</font> " );
info
+= str;
str.Format(L
" <spanclass=cpp-comment>%ddB</span> " ,pDoc -> m_pTestPrj -> m_InnerAttenuator);
info
+= str;
str.Format(L
" <fontsize=14>外部衰减:</font> " );
info
+= str;
str.Format(L
" <spanclass=cpp-comment>%ddB</span><br> " ,pDoc -> m_pTestPrj -> m_OuterAttenuator);
info
+= str;

pmfrm
-> m_toolTip.ShowHelpTooltip( & pt,info);
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CPPToolTip控件 链接:http://www.codeproject.com/KB/miscctrl/pptooltip.aspx 截图: 1 CPPToolTip控件介绍 Files Description PPTooltip.h PPTooltip.cpp CPPTooltip class PPHtmlDrawer.h PPHtmlDrawer.cpp CPPHtmlDrawer class. It's need to drawing HTML string in tooltip body PPDrawManager.h PPDrawManager.cpp CPPDrawManager class is a set of methods to work with graphics. CeXDib.h CeXDib.cpp CCeXDib class thanks to Davide Pizzolato and Davide Calabro. This class use for extend background's effect. Extend background effects by Davide Pizzolato and Davide Calabro become available if defined USE_SHADE: in PPDrawManager.h #define USE_SHADE 2 在普通窗体控件中使用 2.1 创建CPPToolTip对象 CPPToolTip m_tooltip; 2.2 在窗口初始化函数OnInitDialog中: // Create the CPPToolTip object m_tooltip.Create(this); 2.3 添加提示控件 m_tooltip.AddTool(GetDlgItem(IDC_BUTTON1), _T("Tooltip to the control IDC_BUTTON1")); 或者: m_tooltip.AddTool(this, _T("Tooltip for rectangle area"),CRect (100, 100, 200, 200)); 2.4 拦截处理鼠标消息 BOOL ... ::PreTranslateMessage(MSG* pMsg) { m_tooltip.RelayEvent(pMsg); } 3 在工具栏中使用 3.1 在CMainFrame中定义CPPToolTip对象 CPPToolTip m_tooltip; 3.2 在CMainFrame的OnCreate函数中创建CPPToolTip对象,添加工具栏提示 int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { ... m_tooltip.Create(this); //Adds tooltip for toolbar m_tooltip.AddToolBar(&m_wndToolBar); return 0; } 3.3 截取和处理鼠标消息 BOOL CMainFrame::PreTranslateMessage(MSG* pMsg) { m_tooltip.RelayEvent(pMsg); } 4 在菜单中使用 4.1 在CMainFrame中定义CPPToolTip变量 CPPToolTip m_tooltip; 4.2 在CMainFrame的OnCreate()函数中创建CPPToolTip对象 m_tooltip.Create(this); 4.3 Uncomments a line to enable a work with menus. in PPTooltip.h #define PPTOOLTIP_USE_MENU 4.4 为CMainFrame添加两个事件处理对象 //选中菜单事件 void CMainFrame::OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSubMenu) { m_tooltip.OnMenuSelect(nItemID, nFlags, hSubMenu); CFrameWnd::OnMenuSelect(nItemID, nFlags, hSubMenu); } //闲置状态事件 void CMainFrame::OnEnterIdle(UINT nWhy, CWnd* pWho) { m_tooltip.OnEnterIdle(nWhy, pWho); } 4.5 截取和处理鼠标消息 BOOL CMainFrame::PreTranslateMessage(MSG* pMsg) { m_tooltip.RelayEvent(pMsg); }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值