MFC 我自定义了消息映射,但是只参数值能是wParam和lparam,不能多加一个message

qq_30691863 2017-12-21 02:33:45
MFC 我自定义了消息映射,但是只能定义wParam和lparam,不能多加这个定义message,怎么办?

我这样定义,编译不能通过,貌似消息映射只能支持2个参数
我需要获取当前传递进来的message
afx_msg LRESULT OnClientSocketEtevent(UINT umessage,WPARAM wParam, LPARAM lParam);


但是我想获取当前的message 是多少,请问怎么办?
除了使用AfxGetCurrentMessage()
...全文
351 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
信阳毛尖 2018-01-25
  • 打赏
  • 举报
回复
既然是自定义消息,那消息肯定是你自己PostMessage/SendMessage发出去的,那在PostMessage/SendMessage的时候把msgID作为参数传进去好了啊

UINT	msgID = yourMsgID;
::PostMessage(hwnd, msgID, (WPARAM)msgID, 0);

OnClientSocketEtevent(WPARAM wParam, LPARAM lParam)
{
	UINT	msgID = (UINT)wParam;
	//.....
}
「已注销」 2017-12-27
  • 打赏
  • 举报
回复
wParam 和 lParam 都是指针大小,所以可以传递任何指针,微软自己也没少用这个传递指针,比如 NMHDR
zgl7903 2017-12-21
  • 打赏
  • 举报
回复
看 AfxSig 的定义, MFC的消息映射机制不提供传入message 的方法, 要么在你的自定义的消息中 把 wParam 或 lParam 作为参数来传递
smwhotjay 2017-12-21
  • 打赏
  • 举报
回复
param 1个就够了,传递个结构体指针 KO
moonk-z 2017-12-21
  • 打赏
  • 举报
回复
引用 5 楼 zhangli00 的回复:
可以自己定义一个数据对象,比如结构体,比如类,接收的时候用数据对象强转接收
+1 把需要的所有参数以一个class封装,发送消息的时候定义一个指针强转为wParam,接收的时候转回去
倚栏|听风 2017-12-21
  • 打赏
  • 举报
回复
楼上的这个方法目测可行
csulizhang 2017-12-21
  • 打赏
  • 举报
回复
可以自己定义一个数据对象,比如结构体,比如类,接收的时候用数据对象强转接收
qq_30691863 2017-12-21
  • 打赏
  • 举报
回复
能不重载吗,我不想重载这个
zgl7903 2017-12-21
  • 打赏
  • 举报
回复
那就重载 WindowProc 里面直接 switch
qq_30691863 2017-12-21
  • 打赏
  • 举报
回复
有没有什么高效的办法吗?AfxGetCurrentMessage效率太低
qq_30691863 2017-12-21
  • 打赏
  • 举报
回复
请问有什么办法能多加一个参数吗?我想获取message是多少

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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