我正在开发一个 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"
工具提示掩盖了“子项”
工具提示。
我认为事件仅转发到父窗口,但我不太确定如何解决这个问题。
在 PreTranslateMessage
函数中放置断点是没有用的,因为它会在应用程序收到的每个事件上明显停止。我该如何调查这个问题?
最佳答案
找到答案:
只需在创建子窗口样式时添加 SS_NOTIFY
标志即可。
例如:
m_cImageWindow.CreateEx(0,WC_STATIC,NULL,WS_CHILD|SS_NOTIFY,{0,0,0,0},this,0);
关于winapi - 对话框显示工具提示,但子窗口不显示工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44005091/