正文

【转载】笔记:vc6.0添加自定义用户消息的基本过程2007-08-06 16:33:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/sword2008/28251.html

分享到:

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=16276 在学习<vc6.0技术内幕>过程中遇到要添加用户自定义消息的过程.我觉得书上写的比较散,于是就自己总结了这个基本过程,以为日后备查. 首先弄清楚两点:(1)谁要发送这个消息(2)谁要接受这个消息。 用一个简单的例子来说明。对象A向B(也可以就是A到A)发送消息。 1   发送消息 首先在A的头文件中定义这个消息: #define    WM_USERMESSAGE    WM_USER+30 所有自定义消息都是以WM_USER消息为基础加上一个任意的自然数来表示的。A是向外发送消息的对象,因此在A的某个方法(函数)里就会调用用来发消息的函数B::SendMessage()/B::PostMessage(),因为是B接受消息,因此是如上的形式。 2   接受消息 对象接受一个消息,应该有三部分:在头文件中有该消息的处理函数的原型;在实现文件中有接受消息映射的宏; 以及该消息的处理函数的具体实现。 2.1   头文件中加上自定义消息的处理函数原型 在DECLARE_MESSAGE_MAP()语句之前,一对AFX_MSG之间加上如下形式的函数原型: afx_msg   LRESULT OnProcName( WPARAM wParam, LPARAM lParam ); 对Win32来说,wParam, lParam是传递消息最常用的手段。 2.2   在实现文件中加上接受消息映射的宏 在cpp文件里,BEGIN_MESSAGE_MAP语句之后,在一对AFX_MSG_MAP之间,增加 如下形式的代码: ON_MESSAGE(WM_USERMESSAGE, OnProcName) 上面是不用分号结尾的。 2.3   在实现文件中给出消息处理函数的具体实现。       VC++中自定义消息四步走完 开始用到自定义消息,找了半个小时,总结如下: 1、首先在用户类中声明自定义消息WM_SHOWTASK(当然可以为其他): #define WM_SHOWTASK WM_USER + 101 2、然后在类成员声明中声明消息处理函数 afx_msg void MyMessageProc(); 3、在类实现文件中添加消息映射宏 ON_MESSAGE(WM_MyMessage,MyMessageProc); (如果用户需要一个整个系统唯一的消息,可以调用 SDK 函数 RegisterWindowMessage 并使用 ON_REGISTER_MESSAGE 宏指令取代 ON_MESSAGE 宏指令,其余步骤同上。) 4、在类实现文件中添加消息处理函数 LRESULT CMyDlg::MyMessageProc()   VC++ 中的自定义消息 首先定义消息:例如 define WM_MYMESSAGE (WM_USER+100) 在.H文件中,加入消息响应函数,如:         LONG OnMyMessage(WPARAM w,LPARAM l);     该函数有规定的格式:         LONG Function_Name(WPARAM w,LPARAM l); 加入消息响应宏,在响应该消息的类中,在消息响应块中,     成为如下样式:     BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)         //{{AFX_MSG_MAP(CAboutDlg)         ON_MESSAGE(WM_MYMESSAGE,OnMyMessage)         //}}AFX_MSG_MAP     END_MESSAGE_MAP() 在.CPP文件中,编辑消息响应函数,如下:     LONG CMyClass::OnMyMessage(WPARAM w,LPARAM l)     {}

阅读(3386) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册