如何使用 MFC 工具提示的示例代码修复错误?

Posted

技术标签:

【中文标题】如何使用 MFC 工具提示的示例代码修复错误?【英文标题】:How to fix error with sample code for MFC tooltips? 【发布时间】:2010-07-29 18:45:38 【问题描述】:

编译以下源代码from here时出现此错误:

错误 1 ​​错误 C2440:“static_cast”: 无法从 'UINT (__thiscall CStaticLink::* )(CPoint)' 到 'LRESULT (__thiscall CWnd::* )(CPoint)' e:\development\tooltips\cqa0311\statlink.cpp 28

该行代码用于下面的 ON_WM_NCHITTEST

BEGIN_MESSAGE_MAP(CStaticLink, CStatic)
    ON_WM_NCHITTEST()
    ON_WM_CTLCOLOR_REFLECT()
    ON_WM_LBUTTONUP()
    ON_WM_SETCURSOR()
END_MESSAGE_MAP()

我不确定我必须做什么 MFC voodoo 才能编译它。我运气不好?我猜这是用一些不同版本的 MFC 构建的?我正在使用 VS2008。

(我想为我的菜单项提供工具提示,如该网页上所述。)

【问题讨论】:

【参考方案1】:

来自here:

感谢您的报告。我调查并发现此更改是设计使然,在 Visual Studio 2005 的 MFC 中。这引入了源不兼容,因此您需要更新 OnNcHitTest 方法以返回 LRESULT 而不是 UINT。

帕特·布伦纳 Visual C++ 库开发

现在OnNcHitTest 应该声明如下:

afx_msg LRESULT OnNcHitTest(
   CPoint point 
);

【讨论】:

现在我觉得自己很笨,但是谢谢。宏使我摆脱了那里的气味。 ON_WM_NCHITTEST() - 天哪,我多么鄙视 MFC 和所有这些宏巫术。

以上是关于如何使用 MFC 工具提示的示例代码修复错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复错误; '错误:引导工具提示需要 Tether (http://github.hubspot.com/tether/)'

MFC 中检查列表框控件中禁用复选框的工具提示

如何修复从 VS2010 升级到 VS2013 的项目中的链接器错误,其中链接器正在寻找不存在的 MFC 库文件?

如何修复 MFC 绘画故障?

如何使用 extjs 3.4 将工具提示位置保持在任何屏幕上?

PHP:如何修复这种类型提示错误?