请问大家这类函数是不是有固定的参数列表?
ClassName_OnCreate();ClassName_OnDestroy();ClassName_OnPaint();ClassName_OnCommand();
等等这些,如果是的话那为什么我把前面的ClassName换成自己定义的名字后它还认识呢?Windowsx中是怎么定义这些宏的啊?

解决方案 »

  1.   

    这只是个映射的名字就是一个消息对应一个函数,映射就是当收到这个消息的时候进行何种操作(调用哪个函数),至于是对应哪个,你可以自己设定
    你愿意的话可以把WM_COMMAND消息对应的函数命名为LONG 001(hwnd,message,wparam,lparam),只是不具易读性了
      

  2.   

    你的意思是定义操作的函数的名称可以自己定义,那参数表是不是确定的呢?例如我处理WM_OnCommand信息时,可不可以因为我只需要实现极少的功能而略去几个参数,譬如只留下这两个类型(HWND,UINT),这样行吗?
      

  3.   

    你可以看一下mfc里定义的消息映射宏,如
    BEGIN_MESSAGE_MAP, END_MESSAGE_MAP等等就会明白了。
      

  4.   

    来分析一下:
    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了吧
    就是这个数组把消息和处理消息的函数对应起来了