CToolTipCtrl使用详细解说

1、首先要创建一个CToolTipCtrl对象m_pContentTip。

CToolTipCtrl m_pContentTip;

2、在OnInitDialog函数中调用CToolTipCtrl的Create函数,指定其父窗口为当前对话框。

m_pContentTip.Create(this, TTS_ALWAYSTIP);

3、使用AddTool函数为需要显示Tip的控件添加提示信息。

m_pContentTip.AddTool(GetDlgItem(控件ID), 文本);

4、可选:使用SetTipBkColor设置Tip的背景颜色。

m_pContentTip.SetTipBkColor(背景颜色);

5、可选:使用SetTipTextColor设置Tip的文本颜色。

m_pContentTip.SetTipTextColor(文本颜色);

在PreTranslateMessage函数中添加以下代码,用于处理鼠标事件以及将消息传递给ToolTip控件。

BOOL CTestToolTipDlg::PreTranslateMessage(MSG* pMsg)
{
    if (pMsg->message == WM_LBUTTONDOWN ||
        pMsg->message == WM_LBUTTONUP ||
        pMsg->message == WM_MOUSEMOVE)
    {
        m_pContentTip.RelayEvent(pMsg);
    }

    return CDialog::PreTranslateMessage(pMsg);
}

这样就完成了基本的ToolTip控件的使用和设置。需要注意的是,上述代码中的控件ID和文本需要根据实际情况进行替换。另外,如果需要动态改变ToolTip的显示内容,可以参考步骤中的说明进行相应的修改。

动态改变ToolTip的显示内容的方法及步骤:

上面所讲的3步骤,在增加ToolTip时不指定显示的字串,而是使用LPSTR_TEXTCALLBACK。

在窗口中增加消息映射 ON_NOTIFY_EX( TTN_NEEDTEXT, 0, SetTipText )。

在窗口中增加一个函数用于动态提供显示内容,其原型为
BOOL SetTipText( UINT id, NMHDR * pTTTStruct, LRESULT * pResult ),
下面的代码可以根据传入的参数判定应该显示的内容。

BOOL CMainDlg::SetTipText(UINT id, NMHDR* pTTTStruct, LRESULT* pResult)
{
	TOOLTIPTEXT* pTTT = (TOOLTIPTEXT*)pTTTStruct;
	UINT nID = pTTTStruct->idFrom; //得到相应窗口ID,有可能是HWND
	if (pTTT->uFlags & TTF_IDISHWND) //表明nID是否为HWND
	{
		nID = ::GetDlgCtrlID((HWND)nID);//从HWND得到ID值,当然你也可以通过HWND值来判断
		switch (nID)

		{
		case(IDC_BUTTON1):
			_tcscpy_s(pTTT->szText, _T("这是一个按钮"));//设置
			return TRUE;
		case(613):
			_tcscpy_s(pTTT->szText, MyTab.GetToolTips());//设置
			return TRUE;
		}
	}
	return TRUE;
}

若一个控件中,有多个按键,可以使用OnSetCursel来解决:

BOOL CMainDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
	if (pWnd->GetDlgCtrlID() == 613)
	{
		static int stata = -1;
		int newIndex = MyTab.GetCurSel();
		if (stata != newIndex) {
			stata = newIndex;
			m_toolTip.Update();
		}
		return TRUE;
	}

	return CWnd::OnSetCursor(pWnd, nHitTest, message);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值