记得以前写对话框时,按钮直接有一个tips属性,可以添加默认值,不记得是C#还是啥了,今天忽然想给几个按钮添加提示信息,就捣鼓了一下。
头文件中创建CToolTipCtrl变量,然后在初始化时激活使用:
CToolTipCtrl m_iToolTips;
BOOL CTestDXFDlg::OnInitDialog() { CDialog::OnInitDialog(); // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 EnableToolTips(TRUE); m_iToolTips.Create(this); m_iToolTips.Activate(TRUE); m_iToolTips.SetTipTextColor(RGB(0,255,0)); m_iToolTips.SetTipBkColor(RGB(255,0,0)); m_iToolTips.SetDelayTime(150); m_iToolTips.AddTool(GetDlgItem(IDC_BTN_ZOOM_IN), "放大"); m_iToolTips.AddTool(GetDlgItem(IDC_BTN_ZOOM_OUT), "缩小"); m_iToolTips.AddTool(GetDlgItem(IDC_BTN_ZOOM_EXTENT), "适应"); return TRUE; // 除非将焦点设置到控件,否则返回 TRUE }
重载PreTranslateMessage系统消息函数
BOOL CTestDXFDlg::PreTranslateMessage(MSG* pMsg) { switch(pMsg->message) { case WM_MOUSEMOVE: m_iToolTips.RelayEvent(pMsg); break; default: break; } return CDialog::PreTranslateMessage(pMsg); }
手动和自动添加该函数均可(vs2008自动添加PreTranslateMessage函数)
然后遇到问题:不能设置tip的背景颜色和字体颜色,查询后发现,在xp系统下是正常的,在xp之后的系统均出现这个问题,注释掉stdafx.h中相关代码又出现界面其他显示问题。(注释代码详情)
晚了,明天继续吧!
MFC之CToolTipCtrl按钮提示,布布扣,bubuko.com
原文:http://www.cnblogs.com/skywatcher/p/3585449.html