我想模拟一下MFC的消息机制,写了个小例子有个问题不大清楚:发送COMMAND消息,该如何把参数也发过去??SendMessage(WM_COMMAND, ID_BLAH_BLAH);如果是普通的消息,我们可以把参数放到WPARAM和LPARAM中,而发送WM_COMMAND消息却不行。请大家给个解释,谢谢啦
顺便把写的blog,贴一下http://googlestop.com/blog/2007/05/18/%e5%bb%ba%e7%ab%8b%e8%87%aa%e5%b7%b1%e7%9a%84%e6%b6%88%e6%81%af%e5%be%aa%e7%8e%af/

解决方案 »

  1.   

    WM_COMMAND的消息参数也是WPARAM和LPARAM
      

  2.   

    楼上说的对比如PostMessage(WM_COMMAND, ID_FIRE3, (LPARAM)2008);
    这样写,就是把2008发出去了可问题是:ID_FIRE3已经把 WPARAM占了,还有,2008怎么接受??
      

  3.   

    我的目的是,自己构建一个消息循环把一些非UI的消息都放入到自己的消息循环中,所谓的非UI消息,也就是和业务相关的消息这样UI的消息和业务的消息互不干涉,目前我的例子中只实现了WM_COMMAND消息,对于普通的消息,不支持。据我所知,普通的类要支持消息的话,得从CWnd派生,并且要Create一个Window出来。如果只是从CCmdTarget派生,只能支持COMMAND消息。不知道说的是否对。
      

  4.   

    不太明白你的设计,是你的消息参数不够用么?
    可以参考WM_NOTIFY 的做法,传递指针.
      

  5.   

    其实我模仿的就是Design Pattern中的Chain of Responsibility把消息发到链中,然后就不管了,每个处在链条中的类都会检查自己是否能处理该消息,如果它自己能处理,就直接处理并返回TRUE,如果不能处理,就交给下一个。问题是:现在我发的消息,只能传递一个参数,也就是消息的ID(如上面提到的ID_FIRE1, ID_FIRE2)如果我想多传递几个参数,该怎么办?
      

  6.   

    如果我想多传递几个参数,该怎么办?
    参考WM_NOTIFY 消息
    将几个参数合成一个指针