CFrameWnd::CFrameWnd 不能显示tooltips

ussthamcn 2012-09-02 11:56:30
原帖没有人恩回复,我自己不能跟新,新开一个帖子。

研究了下正常的tooltips处理过程应该是
CToolTipsCtrl CToolBar
TTM_GETTOOLINFO ------------>
TTM_GETTOOLINFO<-------------
TTM_ADDTOOL ---------------->
TTM_ADDTOOL <----------------
TTM_ACTIVATE -------
TTM_ACTIVATE -------
TTM_WINDOWFROMPOINT ---------
TTM_WINDOWFROMPOINT ---------
TTM_RELAYEVENT ------------->
TTM_RELAYEVENT <-------------
TTM_DELTOOL ---------------->
TTM_DELTOOL <----------------
我的程序却没有TTM__XXX tooltips消息,不知道消息去哪里了呢
...全文
209 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
看不见的裂痕 2012-09-02
  • 打赏
  • 举报
回复
楼主你老帖我有映像,贴出来看看吧。
ussthamcn 2012-09-02
  • 打赏
  • 举报
回复
4.PreTranslateMessage中调用m_pfnFilterToolTipMessage指针指向的函数
BOOL CWnd::PreTranslateMessage(MSG* pMsg)
{
// handle tooltip messages (some messages cancel, some may cause it to popup)
AFX_MODULE_STATE* pModuleState = _AFX_CMDTARGET_GETSTATE();
if (pModuleState->m_pfnFilterToolTipMessage != NULL)
(*pModuleState->m_pfnFilterToolTipMessage)(pMsg, this);

// no default processing
return FALSE;
}
ussthamcn 2012-09-02
  • 打赏
  • 举报
回复
整理下今天看的MFC的源代码:
1. CWnd是CToolBar的父类,CWnd有个成员函数FilterToolTipMessage(...)
该函数中过滤tooltips消息TTM_XX, 创建CToolTipCtrl对象,并把地址赋给_AFX_THREAD_STATE的m_pToolTip,并向CToolTipCtrl窗口发送TTM_XX消息.

2. 在CToolBar的父类中, m_toolbar.Create(..CBRS_TOOLTIPS...)
3. DockControlBar(&m_toolbar)的时候调用pBar->SetBarStyle(dwStyle);在SetBarStyle()中调用
EnableToolTips(..),
{
    pModuleState->m_pfnFilterToolTipMessage=CWnd::FilterToolTipMessage
  }
ussthamcn 2012-09-02
  • 打赏
  • 举报
回复
原帖:http://topic.csdn.net/u/20120709/21/254c4d23-d649-4b6a-bc98-ef6693b5c0ca.html
我的程序没有Tooltips消息,我的CMainFrame框架类中使用了框架结构VisualFx.h/VisualFx.cpp
有TTabItem/TVisualObject/TVisualFramework这些类
是不是这些消息被这些框架截获了,不过spy++应该能截获这个消息啊,困惑啊

15,978

社区成员

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

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