A BM_CLICK (SP++可以看到)
B:点击按钮时,系统发出的消息是放入消息队列 (找微软)
C:点击按钮时,发给按钮的(找微软)

解决方案 »

  1.   

    按下按钮时,有好几个消息会被投递,包括鼠标左键按下,和鼠标左键弹起,另外如果鼠标点击的位置是窗口的特殊位置,比如菜单栏,标题栏等等,也会投递相关的消息,具体是什么我记不住了。消息是很多了,不过你只要处理能确切反映你要处理的事件的消息就可以了。另外,我想说下按钮到底是什么,这样理解应该会深一点。其实按钮就是一个窗口,默认的按钮都是微软定义好的窗口,如果你用纯API创建过按钮的话就会知道,他同创建窗口一样,也是使用CreateWindow或者CreateWindowEx,然后,这些预先定义好的窗口(类),都有自己的窗口过程(或者消息响应函数),按下按钮时,就会发送消息到按钮的消息函数,进而作出默认的处理,这个处理就是再发送一个消息到按钮的父窗口的消息队列,表示这个按钮被按下了。个人理解,如果不妥,还望多多指教啊
      

  2.   

    A和C很容易证实的,你在窗口和按钮的Proc(就是能处理所有消息的那个,具体名我忘了)函数中都放上断点,
    就可以跟踪所有的消息响应的,可以把鼠标移动这样的消息过滤掉就可以了。
    B好像可以通过getmessage来证实,如果能取到就是队列中的。我记得帮助文档中是说都放在消息队列中的。
      

  3.   

    今日到广州购书中心看了一下VC书,书中讲到消息分成三种,一种窗口消息,一种命令消息,一种控件通知消息,而控件通知消息又分三种,一种窗口消息,一种命令消息,一种WM_NOTIFY,至此才明白怎么回事。