我正在开发一个MFC项目(旧技术,我知道,但仍然会感谢一些帮助)。
在我的对话框类(派生自CDialog
)中,我有:
CToolTipCtrl m_cToolTipCtrl;
CWnd m_cImageWindow;
在OnInitDialog
课程中,我做了:
m_cToolTipCtrl.Create(this);
m_cImageWindow.CreateEx(...);
m_cToolTipCtrl.AddTool(this,_T("Parent"));
m_cToolTipCtrl.AddTool(&m_cImageWindow,_T("Child"));
在PreTranslateMessage
课程中,我做了:
m_cToolTipCtrl.RelayEvent(pMsg);
当我运行项目时,只要我将鼠标悬停在父窗口中,就会显示"Parent"
工具提示,但只要我将鼠标悬停在子窗口中,就不会显示"Child"
工具提示。
我最初在没有"Parent"
工具提示的情况下尝试了此操作并且它不起作用,因此显然不是"Parent"
工具提示屏蔽"Child"
工具提示的问题。
我认为事件只传递给父窗口,但我不确定如何解决这个问题。
在PreTranslateMessage
函数中放置一个断点是没用的,因为它会在应用程序收到的每个事件上显着停止。
请问您如何调查此问题?
谢谢。
答案 0 :(得分:3)
找到答案:
创建时,只需将SS_NOTIFY
标志添加到子窗口样式即可。
例如:
m_cImageWindow.CreateEx(0,WC_STATIC,NULL,WS_CHILD|SS_NOTIFY,{0,0,0,0},this,0);