CToolTipCtrl 点击按钮后显示提示

carryme2020 2009-09-23 03:58:37
CToolTipCtrl m_toolTip; //CXXXDlg的成员变量
BOOL CXXXDlg::OnInitDialog()
{
.
.
.
EnableToolTips(TRUE);
m_toolTip.Create(this,TTS_BALLOON);
m_toolTip.Activate(TRUE);
m_toolTip.AddTool(GetDlgItem(IDC_BUTTON1),L"这是一个按钮");
m_toolTip.SetTipTextColor(RGB(0,0,0));
m_toolTip.SetTitle(1,L"提示");
m_toolTip.SetDelayTime(TTDT_INITIAL, 1);
m_toolTip.SetDelayTime(TTDT_AUTOPOP, 2000);
m_toolTip.SetDelayTime(TTDT_RESHOW, 2000);
.
.
.
}
BOOL CXXXDlg::PreTranslateMessage(MSG* pMsg)
{
if(WM_LBUTTONDOWN == pMsg->message)
m_toolTip.RelayEvent(pMsg);
return CDialog::PreTranslateMessage(pMsg);
}
为什么点击IDC_BUTTON1这个按钮后不会出现提示气球呢
...全文
170 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
carryme2020 2009-09-26
  • 打赏
  • 举报
回复
谢谢大家回答 结贴了
zhuweiping2003 2009-09-24
  • 打赏
  • 举报
回复
这个我先备注
captainliyun 2009-09-24
  • 打赏
  • 举报
回复
改进一下你的代码,呵呵。
BOOL CToolTipTestDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_LBUTTONDOWN && pMsg->hwnd == GetDlgItem(IDC_BUTTON1)->GetSafeHwnd())
{
MSG tempMsg;
tempMsg = *pMsg;
tempMsg.message = WM_MOUSEMOVE;
m_tip.RelayEvent(&tempMsg);
}
return CDialog::PreTranslateMessage(pMsg);
}

void CToolTipTestDlg::OnButton1()
{
m_tip.Update();
}
carryme2020 2009-09-23
  • 打赏
  • 举报
回复
UP
carryme2020 2009-09-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 captainliyun 的回复:]
点击的函数里面,可以加上一句话:
m_toolTip.Update();
强制刷新,显示。
[/Quote]
这样的确可以按下BUTTON1是显示提示,不过鼠标经过是也会出现提示,怎屏蔽掉鼠标移到BOTTON1时的提示呢
captainliyun 2009-09-23
  • 打赏
  • 举报
回复
点击的函数里面,可以加上一句话:
m_toolTip.Update();
强制刷新,显示。
carryme2020 2009-09-23
  • 打赏
  • 举报
回复
经测试,RelayEvent是接受WM_MOUSEMOVE的,但不知道为什么不接收WM_LBUTTONDOWN。。
我已经想到一个办法实现了。。
/*BOOL CXXXDlg::PreTranslateMessage(MSG* pMsg) 
{
if(WM_LBUTTONDOWN == pMsg->message)
m_toolTip.RelayEvent(pMsg);
return CDialog::PreTranslateMessage(pMsg);
}*/
void CXXXDlg::OnBnClickedButton1()
{
m_toolTip.Pop();
MSG msg;
msg.hwnd = GetDlgItem(IDC_BUTTON1)->m_hWnd;
msg.message = WM_MOUSEMOVE;
m_toolTip.RelayEvent(&msg);
}

这个能实现点击按钮后显示 气球式提示 ,不过方法好像比较笨。。。还有谁知道怎样可以使RelayEvent接收WM_LBUTTONDOWN呢。。MSDN说可以接收WM_LBUTTONDOWN WM_MOUSEMOVE WM_LBUTTONUP WM_RBUTTONDOWN WM_MBUTTONDOWN WM_RBUTTONUP WM_MBUTTONUP 这些消息的,可是不知道为什么不行

z8y8x 2009-09-23
  • 打赏
  • 举报
回复
对CToolTipCtrl是自动提示的
youyifang 2009-09-23
  • 打赏
  • 举报
回复
点击提示?那就不是CToolTipCtrl 了用菜单来做那个提示吧,点击,显示一个菜单项,包含你要的信息.
或者你自己模拟一个.
carryme2020 2009-09-23
  • 打赏
  • 举报
回复
不行啊,我意思是当我左键点击BUTTON1这个按钮时才出现提示
smallfishff 2009-09-23
  • 打赏
  • 举报
回复
m_toolTip.Create(this, TTS_ALWAYSTIP | TTS_CLOSE | TTS_NOFADE);
m_toolTip.AddTool(GetDlgItem(IDC_BUTTON1), _T("11111111"));
m_toolTip.SetDelayTime(256);

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧