问大家一个关于消息分析器的问题
请问大家这类函数是不是有固定的参数列表?
ClassName_OnCreate();
ClassName_OnDestroy();
ClassName_OnPaint();
ClassName_OnCommand();
等等这些,如果是的话那为什么我把前面的ClassName换成自己定义的名字后它还认识呢?Windowsx中是怎么定义这些宏的啊?
问题点数:50、回复次数:6Top
1 楼shager(玉面飞狐)回复于 2005-04-01 11:37:10 得分 10
这只是个映射的名字就是一个消息对应一个函数,映射就是当收到这个消息的时候进行何种操作(调用哪个函数),至于是对应哪个,你可以自己设定
你愿意的话可以把WM_COMMAND消息对应的函数命名为LONG 001(hwnd,message,wparam,lparam),只是不具易读性了Top
2 楼happymoonfy(快乐精灵)回复于 2005-04-01 11:51:47 得分 0
你的意思是定义操作的函数的名称可以自己定义,那参数表是不是确定的呢?
例如我处理WM_OnCommand信息时,可不可以因为我只需要实现极少的功能而略去几个参数,譬如只留下这两个类型(HWND,UINT),这样行吗?Top
3 楼Mackz(在相互)回复于 2005-04-01 11:58:09 得分 5
楼上举例不恰当,C/C++中,符号名(包括函数名)不能是数字开头的。Top
4 楼happymoonfy(快乐精灵)回复于 2005-04-01 21:32:01 得分 0
顶上去Top
5 楼tankbattle(坦克大战)回复于 2005-04-01 21:44:34 得分 10
你可以看一下mfc里定义的消息映射宏,如
BEGIN_MESSAGE_MAP, END_MESSAGE_MAP等等就会明白了。Top
6 楼wshcdr(dd)回复于 2005-04-01 23:21:17 得分 25
来分析一下:
OnPaint对应着ON_WM_PAINT
而ON_WM_PAINT又是什么呢?
////////////MFC SRC
#define ON_WM_PAINT() \
{ WM_PAINT, 0, 0, 0, AfxSig_vv, \
(AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&OnPaint },
///////////MFC SRC ENDS
注意到那个WM_PAINT,和OnPaint了吧
就是这个数组把消息和处理消息的函数对应起来了
Top




