MFC 鼠标移动时显示提示信息

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);
}

猜你喜欢

转载自blog.csdn.net/CXYLVCHF/article/details/111225518
MFC