当鼠标悬停在 MFC C++ 中列表控件的列标题上时显示工具提示

Posted

技术标签:

【中文标题】当鼠标悬停在 MFC C++ 中列表控件的列标题上时显示工具提示【英文标题】:Display ToolTip when mouse hover on Column Header of List Control in MFC C++ 【发布时间】:2017-07-26 11:34:45 【问题描述】:

我有一个场景,当我将鼠标悬停在 MFC C++ 中列表控件的列标题上时,我需要显示一个工具提示。

当我只将鼠标悬停在第 1 列和第 2 列时,我需要工具提示。

我使用了消息处理程序 OnNotify(),因此当我将鼠标悬停在 List 控件标头上时,调用将进入 OnNotify() 函数。现在如何只处理第 1 列和第 2 列。

有人可以提出更好的方法吗?

BOOL MyClass::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)

//////////////////////////
...............
// How to handle here??
..............
////////////////////////

return true;


【问题讨论】:

请更改您的问题,以便我们了解 MyClass 是什么样的窗口类。 您可以直接使用 HDM_GETITEMRECT 或 CHeaderCtrl::GetItemRect 来确定鼠标光标(GetCursorPos)是否在我认为的特定列内。 【参考方案1】:

我相信 lParam 是一个 NMHDR 结构

NMHDR nmh = (NMHDR&)lParam;
nmh.code;     // What Event caused the Notify
nmh.hwndFrom; // What Window
nmh.idFrom;   // Which Control

我认为您可以使用“idFrom”来确定哪个列生成了事件。

【讨论】:

【参考方案2】:

也许my article in CodeGuru 会帮助你。这是我认为的 2005 年,但仍然有效。

【讨论】:

以上是关于当鼠标悬停在 MFC C++ 中列表控件的列标题上时显示工具提示的主要内容,如果未能解决你的问题,请参考以下文章

在MFC的CListCtrl中怎么实现当鼠标在一定的列双击时执行特定的函数?

当鼠标悬停在控件的指定区域时如何更改鼠标光标?使用 c#

MFC 列表控件滚动显示额外的网格线

MFC鼠标移动/离开,悬停在按钮上[关闭]

MFC(C++):为啥顶部的控件不接收事件?

当鼠标悬停在 DIV 上时,如何使某些控件可见并与 DIV 重叠? [关闭]