怎么处理SendMessage()发来的消息 5

 我来答
tendgzf
2015-10-15 · 知道合伙人教育行家
tendgzf
知道合伙人教育行家
采纳数:336 获赞数:1145
从事气体安全系统工程方面近十年,对气体安全方面有一定期了解,在国内安全类杂志上发表多篇论文。

向TA提问 私信TA
展开全部
  1. 在类的声明处加入afx_msg打头的消息响应函数声明。

 2.在cpp文件中实现该函数(参数依据你自己的设计,WPARAM和LPARAM都能传递数据,不用也可)。

3.在该类的DECLARE_MESSAGE_MAP与END_MESSAGE_MAP之间插入ON_MESSAGE(消息名,函数名)。


消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。例如,对于单击鼠标所产生的消息来说,这个记录中包含了单击鼠标时的坐标。这个记录类型叫做TMsg,它在Windows单元中是这样声明的: 

type 
TMsg = packed record 
hwnd: HWND; //窗口句柄 
message: UINT;//消息常量标识符 
wParam: WPARAM ;// 32位消息的特定附加信息 
lParam: LPARAM ;// 32位消息的特定附加信息 
time: DWORD;//消息创建时的时间 
pt: TPoint; //消息创建时的鼠标位置 
end ; 

消息中有什么? 
是否觉得一个消息记录中的信息像希腊语一样?如果是这样,那么看一看下面的解释:hwnd 32位的窗口句柄。窗口可以是任何类型的屏幕对象,因为Win32能够维护大多数可 
视对象的句柄(窗口、对话框、按钮、编辑框等)。message 用于区别其他消息的常量值,这些常量可以是Windows单元中预定义的常量,也 
可以是自定义的常量。 
wParam 通常是一个与消息有关的常量值,也可能是窗口或控件的句柄。 
lParam 通常是一个指向内存中数据的指针。由于WParam、lParam和Pointer都是32位的,因此,它们之间可以相互转换。 

laiyongsen
2012-03-24
知道答主
回答量:18
采纳率:0%
帮助的人:10.9万
展开全部
首先 定义 一个消息,就是#define 之类的,在一楼所说的添加 消息响应函数 到DECLARE_DESSAGE_MAP()里面,接着就在函数里面可以实现你想要的功能了,sendmessage函数的 参数 你应该知道了,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
weiyinwu
2012-02-21 · TA获得超过1540个赞
知道小有建树答主
回答量:1057
采纳率:50%
帮助的人:1143万
展开全部
需要把该消息映射到处理涵数处理 MFC一般放在类的DECLARE_MESSAGE_MAP()前
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
inz00001
2012-02-21
知道答主
回答量:2
采纳率:0%
帮助的人:3万
展开全部
看到SendMessage的第一个参数没?是一个窗口句柄,消息一般情况下都是由窗口来处理,这也符合了一般WIN32程序的设计思想。MFC中,既然是窗口的话,必然是继承自CWnd的自定义类。
消息的映射至少需要以下三个步骤,1.在类的声明处加入afx_msg打头的消息响应函数声明。2.在cpp文件中实现该函数(参数依据你自己的设计,WPARAM和LPARAM都能传递数据,不用也可)。3.在该类的DECLARE_MESSAGE_MAP与END_MESSAGE_MAP之间插入ON_MESSAGE(消息名,函数名)。
如果想学习MFC的消息映射机制,唯有阅读其源码。在所有的应用程序框架中,MFC是唯一一个需要通过阅读源码深入理解其内部机制及原理的,否则无法独立开发基于MFC之APP。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式