16,472
社区成员
发帖
与我相关
我的任务
分享
m_toolTips.SetDelayTime(TTDT_AUTOPOP,3000);
// 我这样做,不过好像没有效果。。。
// 大家有什么好方法吗? Thanks for all replies
*.h
CToolTipCtrl m_toolTips;
*.cpp
//..OnInitDialog()
m_toolTips.Create(this);
m_toolTips.Activate(TRUE);
// m_toolTips.SetDelayTime(3000); 延时3秒显示
m_toolTips.AddTool(GetDlgItem(IDC_BUTTON1),"123");
BOOL CX*Dlg::PreTranslateMessage(MSG* pMsg)
{
m_toolTips.RelayEvent(pMsg);
return CDialog::PreTranslateMessage(pMsg);
}
//void CMyFormView::OnInitialUpdate()
m_toolTips.Create(this, TTS_ALWAYSTIP | TTS_BALLOON | TTS_NOPREFIX);
m_toolTips.Activate(TRUE);
m_toolTips.SetMaxTipWidth(300);
m_toolTips.SetDelayTime(TTDT_AUTOPOP,3000); // Just test to solve the problem
BOOL CMyDialog::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message== WM_LBUTTONDOWN ||
pMsg->message== WM_LBUTTONUP ||
pMsg->message== WM_MOUSEMOVE)
{
m_ToolTipCtrl.RelayEvent(pMsg);
}
return CDialog::PreTranslateMessage(pMsg);
}
//实现大概也跟MSDN的一样。
//就是说,我把鼠标放在要提示的控件上,放着不动,CToolTipCtrl 的提示应该是显示长时间一点的吧?
//但我这里做出来的提示是先显示提示,再消失,再显示。。。 就是一闪一闪的这样。。。。。
m_toolTips.AddTool(this, (*iter)->m_DestPanel.GetDestinInfo(), rcToolTip, 1);
// Add like this
tooptopDlg.h文件添加:
public:
CListBox m_MyListBox;
CToolTipCtrl m_MyToolTip;
tooptopDlg.cpp文件添加:
1 OnInitDialog(){
// TODO: 在此添加额外的初始化代码
m_MyListBox.AddString(_T("123"));
m_MyListBox.AddString(_T("333"));
m_MyListBox.AddString(_T("444"));
m_MyListBox.AddString(_T("555"));
m_MyToolTip.Create(this);
m_MyToolTip.Activate(TRUE);
m_MyToolTip.AddTool(GetDlgItem(IDC_LIST1),_T("this is list box"));
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
2 重载PreTranslateMessage
BOOL CtooptopDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
CPoint point;
CString strTxt;
GetCursorPos(&point);//取得当前鼠标的坐标
if(::WindowFromPoint(point) == m_MyListBox)//从当前鼠标的坐标获得鼠标所在窗口的句柄,并判断是否为LISTBOX控件
{
m_MyListBox.ScreenToClient(&point);//由于GetCursorPos函数返回的是相对于整个屏幕的坐标值,因此需要把这个坐标值转换成相对于Listbox的坐标
BOOL bIn;
int nNindex = m_MyListBox.ItemFromPoint(point,bIn);//从鼠标坐标获得鼠标目前所在的listbox项目索引
if(!bIn)
{
if(nNindex == 0)m_MyToolTip.UpdateTipText(_T("Item 1"),GetDlgItem(IDC_LIST1));
if(nNindex == 1)m_MyToolTip.UpdateTipText(_T("Item 2"),GetDlgItem(IDC_LIST1));
if(nNindex == 2)m_MyToolTip.UpdateTipText(_T("Item 3"),GetDlgItem(IDC_LIST1));
if(nNindex == 3)m_MyToolTip.UpdateTipText(_T("Item 4"),GetDlgItem(IDC_LIST1));
}else m_MyToolTip.UpdateTipText(_T(""),GetDlgItem(IDC_LIST1));
}
m_MyToolTip.RelayEvent(pMsg);
return CDialog::PreTranslateMessage(pMsg);
}