如何使用 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/)'
如何修复从 VS2010 升级到 VS2013 的项目中的链接器错误,其中链接器正在寻找不存在的 MFC 库文件?