MFC编辑框CEdit中的气泡提示方法

  经常在对MFC对话框中见到效果图如下:
MFC编辑框CEdit中的气泡提示方法_第1张图片
下面是实现方法:
1.头文件定义

// 气泡提示
	void ShowBalloonTip(HWND hWnd, LPCTSTR lpszText, LPCTSTR lpszTittle, int nTTIcon);

2.主函数

void CFasDlg::ShowBalloonTip(HWND hWnd, LPCTSTR lpszText, LPCTSTR lpszTittle, int nTTIcon)
{
#ifdef _UNICODE
	EDITBALLOONTIP tagTip;
	tagTip.cbStruct = sizeof(EDITBALLOONTIP);
	tagTip.pszText = lpszText;
	tagTip.pszTitle = lpszTittle;
	tagTip.ttiIcon = nTTIcon;
	Edit_ShowBalloonTip(hWnd, &tagTip);
#else
	MessageBox(lpszText, lpszTittle);
#endif

	((CEdit*)CWnd::FromHandle(hWnd))->SetSel(0, -1);
}

3.使用事例

CWnd *pWnd = GetDlgItem(ID_EDIT1); // 取得控件的指针
HWND hwnd = pWnd->GetSafeHwnd(); // 取得控件的句柄
if ((int)dHorDis < nMin || (int)dHoDis > nMax)
{
	strTip.Format(_T("取值范围应在%d~%d之间"), nMin, nMax);							
	ShowBalloonTip(hwnd , strTip, _T("提示"), TTI_INFO);
	return 0;
}

4.浮动提示框 CToolTipCtrl 控件使用

当用VC的MFC框架编程时,将鼠标放到系统提供的工具栏按钮或菜单上时,系统会自动弹出一个小的提示框,给出此项功能的帮助或提示,实现此功能呢如下:

1、在 XXXDlg.h 中
virtual BOOL PreTranslateMessage(MSG* pMsg);
CToolTipCtrl m_tooltip;

2、XXXDlg.cpp 中

初始化函数BOOL XXXDlg::OnInitDialog()中:
//tips
m_tooltip.Create(this);
m_tooltip.AddTool(GetDlgItem(IDC_BUTTON_PLAY), _T(“This is ToolTip”));
m_tooltip.AddTool(GetDlgItem(IDC_BUTTON_STOP), _T(“This is ToolTip”));
m_tooltip.SetMaxTipWidth(123);
m_tooltip.Activate(TRUE);

3、在XXXDlg.cpp中 添加代码:

BOOL CFuncPannelDlg::PreTranslateMessage(MSG* pMsg)
{
 ASSERT(pMsg != NULL);
 if (pMsg->message == WM_MOUSEMOVE || pMsg->message == WM_LBUTTONDOWN || pMsg->message == WM_LBUTTONUP)
 {
  m_tooltip.RelayEvent(pMsg);
 }
 return CDialog::PreTranslateMessage(pMsg);
}

你可能感兴趣的:(MFC,气泡提示)