VS2010 ------ 显示菜单Tooltip编程
来源:互联网 发布:oracle数据库pdf下载 编辑:程序博客网 时间:2024/05/21 17:58
显示菜单Tooltip编程
菜单的Tooltip是给菜单给出相应的提示信息,可以关闭也可以打开,当然为了Tooltip相关的色彩显示,专门建立了以CMFCTooltipCtrl为基类的继承类
首先以CMFCTooltipCtrl为基础,建立类CMyToolTipCtrl,并重载相关的属性函数OnFillBackground(), OnDrawSeparator( ),绘制Tooltip的背景、图标及文本的颜色。
voidCMyTooltip::OnDrawSeparator( CDC* pDC, int x1, int x2, int y )
{
ASSERT_VALID (pDC);
CDrawingManager dm (*pDC);
CRect rect (x1, y, x2, y + 1);
dm.FillGradient(rect, RGB (255, 201, 109), RGB (255, 247, 225), FALSE);
}
voidCMyTooltip::OnFillBackground( CDC* pDC, CRect rect, COLORREF& clrText, COLORREF& clrLine )
{
ASSERT_VALID(pDC);
CDrawingManager dm(*pDC);
dm.FillGradient2(rect,RGB (104, 165, 225), RGB (37,92, 222), 90);
clrLine= RGB (113, 166, 246);
clrText= RGB (255, 255, 255);
}
随后重载OnMenuButtonToolHitTest()函数,以便获得鼠标点击菜单或者图标的消息,以便显示Tooltip。
BOOL CMainFrame::OnMenuButtonToolHitTest(CMFCToolBarButton* pButton, TOOLINFO* pTI)
{
ASSERT_VALID(pButton);
ASSERT(pTI != NULL);
if (!theApp.m_bTTInPopupMenus || pButton->m_nID == 0 || pButton->m_nID == (UINT)-1)
{
return FALSE;
}
CStringstrText = pButton->m_strText;
strText.Remove(_T('&'));
if (strText.IsEmpty ())
{
return FALSE;
}
if (pTI)
{
pTI->lpszText= (LPTSTR) ::calloc ((strText.GetLength () + 1),sizeof(TCHAR));
if (pTI->lpszText)
{
lstrcpy(pTI->lpszText, strText);
}
}
return TRUE;
}
然后再在视类中加入不同类型的Tooltip处理程序
voidCTooltipViewView::OnApplyTooltip()
{
afxGlobalData.m_nMaxToolTipWidth= 200;
theApp.m_bTTInPopupMenus= TRUE;
if (m_nType == 0) // Standard tooltip
{
theApp.GetTooltipManager()->SetTooltipParams (
AFX_TOOLTIP_TYPE_ALL,
NULL,
NULL);
return;
}
if (m_nType == 1) // Balloon tooltip
{
CMFCToolTipInfoparamsBalloon;
paramsBalloon.m_bBalloonTooltip= TRUE;
theApp.GetTooltipManager()->SetTooltipParams (
AFX_TOOLTIP_TYPE_ALL,
RUNTIME_CLASS(CMFCToolTipCtrl),
¶msBalloon);
return;
}
if(m_nType == 2)
{
CMFCToolTipInfoparams;
params.m_bBoldLabel= TRUE;
params.m_bDrawDescription= TRUE;
params.m_bDrawIcon= TRUE;
params.m_bRoundedCorners= TRUE;
params.m_bDrawSeparator= TRUE;
params.m_clrFill= RGB (255, 255, 255);
params.m_clrFillGradient= RGB (228, 228, 240);
params.m_clrText= RGB (61, 83, 80);
params.m_clrBorder= RGB (144, 149, 168);
theApp.GetTooltipManager()->SetTooltipParams (
AFX_TOOLTIP_TYPE_ALL,
RUNTIME_CLASS(CMFCToolTipCtrl),
¶ms);
return;
}
if(m_nType == 3)
{
theApp.GetTooltipManager()->SetTooltipParams (
AFX_TOOLTIP_TYPE_ALL,
RUNTIME_CLASS(CMyTooltip));
}
}
最终软件界面:
- VS2010 ------ 显示菜单Tooltip编程
- VS2008SP1/VS2010新建的SDI/MDI程序,为菜单项添加ToolTip信息
- ComboBox的ToolTip显示
- 显示ToolTIP最终版
- ComboBox的ToolTip显示
- FeatureLayer tooltip显示设置
- C# ListBox显示tooltip
- echarts tooltip显示图片
- Highcharts tooltip显示数量
- VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
- VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
- VS2008SP1/VS2010 展开所有菜单下的子菜单项(默认是部分菜单折叠显示)
- VS2010 MFC 右键弹出菜单及显示图标
- ToolTip 类编程介绍
- VS2010+QT5编程之为QTableView添加右键菜单
- 直接显示ToolTip和errorTip
- 在DataGrid上显示toolTip
- ToolTip显示即时提示消息
- Struts2中的ModelDriven机制及其运用
- jquery.cookie.js 操作cookie实现记住密码功能的实现代码
- hibernate将hql转换成count(*)的方法,支持所有的数据库oracle,mysql等
- Struts2插件 —— struts2-json-plugin-2.x.x
- myeclipse2013_maven配置
- VS2010 ------ 显示菜单Tooltip编程
- MRProgress网易使用的进度条、刷新条
- Hostmonster上配置redmine的邮件发送功能
- URL for Pronouncing Names
- MVC4 网站发布(整理 + 部分转载 + 部分问题收集和解决方案)
- GNU C 与 ANSI C的区别
- java web项目用cookie记住用户名、密码
- adb server is out of date killing
- oracle cmd sqlplus 数据导入 数据导出