MFC中控件显示提示信息tooltip

方法一:利用CWnd自身支持的tooptip来实现

1、在窗口中增加消息映射ON_NOTIFY_EX(TTN_NEEDTEXT, 0, SetTipText)  // SetTipText是回调函数

2、EnableToolTips(TRUE)  // 使用这个方法调用这个函数是必不可少的,建议在CDialog::OnInitDialog调用

3、在窗口中增加一个函数用于动态提供显示内容,其原型为 BOOL SetTipText(UINT id, NMHDR *pTTTStruct, LRESULT *pResult)

BOOL CCTestTooltipCtrlDlg::SetTipText(UINT id, NMHDR *pTTTStruct, LRESULT *pResult)
{
	TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pTTTStruct;
	UINT nID = pTTTStruct->idFrom;  // 得到相应窗口ID,有可能是HWND  

	// 表明nID是否为HWND
	if (pTTT->uFlags & TTF_IDISHWND)
	{
		// 从HWND得到ID值,当然你也可以通过HWND值来判断
		nID = ::GetDlgCtrlID((HWND)nID);
		if (NULL == nID)	return FALSE;

		switch (nID)
		{
		case IDC_Button:
			strcpy(pTTT->lpszText, "This is a Button Ctrl");
			break;
		case IDC_Text:
			strcpy(pTTT->lpszText, "This is a Text Ctrl");
			break;
		default:
			break;
		}

		return TRUE;
	}

	return FALSE;
}

4、很重要的一点,要显示的控件必须设置notify属性,否则收不到notify消息,自然也就显示不了tooltip

posted on 2021-05-31 14:56  Cynthia_W  阅读(850)  评论(0编辑  收藏  举报