一个自定义消息的问题,在VC6 可以通过,但在 VC.NET 就出错。

s98231106 2003-07-07 11:35:15
BEGIN_MESSAGE_MAP(CXPButton, CButton)
//{{AFX_MSG_MAP(CXPButton)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
ON_WM_MOUSEMOVE()
ON_MESSAGE(WM_MOUSELEAVE, OnMouseLeave)
ON_MESSAGE(WM_MOUSEHOVER, OnMouseHover) // 这句出问题了
END_MESSAGE_MAP()


提示为:
XPButton.cpp
d:\vc.net\ExcelAccessSrc\XPButton.cpp(51) : error C2440: “static_cast” : 无法从“void (__thiscall CXPButton::* )(WPARAM,LPARAM)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”
在匹配目标类型的范围内没有具有该名称的函数
...全文
42 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
eroswzg 2003-08-13
  • 打赏
  • 举报
回复
没错,而且返回值什么的都要变成LRESULT类型的的。。。。
jeremyhit 2003-08-13
  • 打赏
  • 举报
回复
有的时候这样该还是不行
如:
e:\Entire Net\EntireDlg.cpp(157) : error C2440: “static_cast” : 无法从“LPCRECT (__thiscall CEntireDlg::* )(WPARAM,LPARAM)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”
s98231106 2003-07-07
  • 打赏
  • 举报
回复
to : ahu9870(阿胡9870)

我还是不知道该怎么改写。

请帮忙改一下
ahu9870 2003-07-07
  • 打赏
  • 举报
回复
老问题了。在VC.NET中,类型检查更严格了,所以你的 OnMouseLeave 和 OnMouseHover 消息处理函数的原型应写成

afx_msg LRESULT OnMouseHover(WPARAM wparam ,LPARAM lparam)
蝈蝈太阳 2003-07-07
  • 打赏
  • 举报
回复
UP
思危 2003-07-07
  • 打赏
  • 举报
回复

afx_msg LRESULT OnMouseHover(WPARAM wparam ,LPARAM lparam)
覆盖
afx_msg void OnMouseHover(WPARAM wparam ,LPARAM lparam)
的声明即可,该声明在XPButton.h中

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧