1、定义你的消息
2、在需要发送的地方发送(必须明确发给谁)
3、在接收消息的地方定义消息响应函数
4、完成如下(加了*号的地方)工作:
BEGIN_MESSAGE_MAP(C……, C……)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_CLOSE()
ON_WM_TIMER()
*ON_MESSAGE(IDC_???, On???)
*ON_MESSAGE(IDC_???, On???)
END_MESSAGE_MAP()

解决方案 »

  1.   

    hi,楼上的兄弟们,我用了ON_MESSAGE宏呀, 我现在想把消息表现出来,比如在主窗口点击一下鼠标,弹出一个对话框,怎么办呢
      

  2.   

    将SendMessage的第二个参数改为1试试。
      

  3.   

    ujiangsh(飞鹰) :我试了,还是不行呀, :(
    而且我曾在一个原来的工程中成功过,但新建一个后我再仿照作一遍,就不行了呢, 
    我真菜鸟
      

  4.   

    laoda们,我给了分,你们收到了吗, 我不知道系统又怎么了 :(
      

  5.   

    if ( pMsg->message == WM_COMMAND ) 这句不对吧~~~WIN_MSG_TEST才是你自定义的消息ID啊`~
      

  6.   

    TO:zx_sanjin(1.5kg, 不赊账~~~)
       我试了if ( pMsg->message == WIN_MSG_TEST) 没有反应呀, 你还有何高见吗,请赐教!
      

  7.   

    To zrb007: 
    解决了~~~~~~~~原来不是这么回事`~~~其实很简单~~~~
    你发送的消息用的是SendMessage, 也就是说, 这个消息要直接发送到指定的线程来并等待着被处理直到处理结束, 消息也就被销毁; 
    所以如果你想用PreTranslateMessage来捕获消息就应该用PostMessage函数, 它的作用是不管消息是否被处理, 都将继续, 消息也不是直接发送到某个线程, 而是发送到消息队列当中等待处理~~~
    不知这样的解释你是否明白, 我也没有太多的经验~~~~~~
      

  8.   

    To zx_sanjin(1.5kg, 不赊账~~~) : 我作过一个程序,先前用了sendMessage(WIN_MSG_TEST) 在鼠标左键的事件里,用PreTranslateMessage来捕获,能收到呀,但我后来发现,我去掉sendMessage后,点击左键一样能捕获到消息, 系统好像只有定义了消息映射就能处理消息了, 后来我在另外一个程序里试了一样的方法, 可就是没有相应了, 艾,也不知道原因了,只能一点点学了, 原来也许是碰巧成功罢了,
        对了, 你解决的例子可以给我来一份吗,谢谢:)
        [email protected]
      

  9.   

    呵呵, 总算找到原因了,原来是我发送消息的地方不对,在mainFrm里的鼠标事件里发不出来, 应该在Cview的子类中才能发出, 在PreTranslateMessage()捕获消息只需用
       if ( pMsg->message ==MY_MESSAGE)
           。
       即可捕获自定义消息MY_MESSAGE 当然前面还要定义消息映射及其函数了
        感谢大家热心的参与:)