MFC 鼠标移动时显示提示信息
1.在CMyDlg.h头文件中定义CToolTipCtrl类
CToolTipCtrl m_ToolTip;
2.在CMyDlg.cpp中的CMyDlg::OnInitDialog()创建并添加需要提示的控件
//鼠标移动时,提示信息
m_ToolTip.Create(this);
m_ToolTip.AddTool(GetDlgItem(IDC_EDIT_WORKSTATE1), "工作状态1"); //IDC_BUTTON2为你要添加提示信息的按钮的ID
m_ToolTip.AddTool(GetDlgItem(IDC_EDIT_WORKSTATE2), "工作状态2"); //IDC_BUTTON2为你要添加提示信息的按钮的ID
m_ToolTip.AddTool(GetDlgItem(IDC_EDIT_WORKSTATE3), "工作状态3"); //IDC_BUTTON2为你要添加提示信息的按钮的ID
m_ToolTip.AddTool(GetDlgItem(IDC_EDIT_WORKSTATE4), "工作状态4"); //IDC_BUTTON2为你要添加提示信息的
m_ToolTip.SetDelayTime(300); //设置延迟时间
m_ToolTip.SetTipTextColor(RGB(0, 0, 255)); //设置提示文本的颜色
m_ToolTip.SetTipBkColor(RGB(255, 255, 255)); //设置提示框的背景颜色
m_ToolTip.SetMaxTipWidth(360); //设置宽度限制
m_ToolTip.Activate(TRUE); //设置是否启用提示
3.在PreTranslateMessage(MSG* pMsg)函数中添加鼠标移动时的事件
BOOL CMyDlg::PreTranslateMessage(MSG* pMsg)
{
//if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN)
//{
// return TRUE;//解决回车键意外退出问题
//}
if (pMsg->message == WM_MOUSEMOVE)
{
m_ToolTip.RelayEvent(pMsg);
}
return CDialogEx::PreTranslateMessage(pMsg);
}
4.在void CMyDlg::OnTimer(UINT_PTR nIDEvent)中更新显示内容
void CUnioneCamerControllerDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CWnd* pWnd = GetFocus();//得到已添加tip控件
if (pWnd != NULL)
{
CString szTipInfo = "";
int nID = pWnd->GetDlgCtrlID();//获取键盘光标所在控件的ID
switch (nID)
{
case IDC_EDIT_WORKSTATE1:
szTipInfo = m_szWorkState1TipInfo;
break;
case IDC_EDIT_WORKSTATE2:
szTipInfo = m_szWorkState2TipInfo;
break;
case IDC_EDIT_WORKSTATE3:
szTipInfo = m_szWorkState3TipInfo;
break;
case IDC_EDIT_WORKSTATE4:
szTipInfo = m_szWorkState4TipInfo;
break;
}
m_ToolTip.UpdateTipText(szTipInfo, pWnd);//更新tip的内容
}
CDialogEx::OnTimer(nIDEvent);
}