小弟近日刚刚开始接触VC,对MFC中的消息处理有点不明白。为什么WM_PAINT消息对应的处理函数是afx_msg void OnPaint();  ?
    而WM_CRATE消息对应的处理函数是afx_msg void OnCreate( LPCREATESTRUCT lpCrateStruct ); ?
 
消息处理函数中的参数是怎么传递过来的,如果我们关联消息与消息处理函数,那么参数应该怎么来传递??急切想知道,请各位大哥大姐们看到了,帮帮忙啊~

解决方案 »

  1.   

    1.默认消息对应处理函数
    2.由消息原型定义的参数类型,通过SendMessage的后两个参数传递
      

  2.   

    看到那些在cpp里面的宏了吗
    BEGIN_MESSAGE_MAP()
    ON_WM_PAINT()
    END_MESSAGE_MAP()仔细看看,其实就是类似用switch的结构进入不同的响应函数(当然实际上没那么简单)
    新人入手还是不要看得太复杂好
      

  3.   

    理解两个宏,看看侯sir的深入浅出MFC,有详解。
    BEGIN_MESSAGE_MAP()
    END_MESSAGE_MAP()
      

  4.   

    有两个wParam,lParam,提供使用,可自己定,一般是传一个指针。
      

  5.   

    To xqk(夏乾坤) :   你好,谢谢你能参与的我问题。
       SendMessage函数是消息传递的一种方法。
     
       我是想知道:比如说SendMessage(WM_VSCROLL , wparam , lparam );   在MFC内部是怎么进行OnVScroll( LOWORD ( wparam) , HIWORD ( wparam ) , lparam ); 这样的调用。参数为什么会这么传递,在MFC中肯定会有某种机制,总不可能是手动的吧。    这就是我的问题?    真的很不好意思,没能把问题说得更明白一点。