MFC中消息和事件 好像有点混淆
通常一般的“事件”有的是在消息中实现,有的却是在事件events中实现,怎么回事呢?
比如我对一个空面板点击鼠标左键,可以再消息中添加一个wm_lbuttondown消息。可以执行一个事件方法。
如果面板上有一个按钮我发现好像即可以添加消息也可以再属性面板中events事件中添加那个按钮的事件,很奇怪啊。我感觉是不是只要是ui界面上的控件都可以添加事件events呀

解决方案 »

  1.   

    消息和事件有区别吗?你说的都是相应消息事件啊,只不过一个响应的是WM_LBUTTONDOWN消息 一个相应的是BN_CLICKED消息建议你多看看这方面的资料 弄明白点~~
      

  2.   

    MFC中消息和事件 好像有点混淆 
    通常一般的“事件”有的是在消息中实现,有的却是在事件events中实现,怎么回事呢? 
    比如我对一个空面板点击鼠标左键,可以再消息中添加一个wm_lbuttondown消息。可以执行一个事件方法。 
    如果面板上有一个按钮我发现好像即可以添加消息也可以再属性面板中events事件中添加那个按钮的事件,很奇怪啊。 我感觉是不是只要是ui界面上的控件都可以添加事件events呀 
    ===============
    对MFC本来我觉得自己还是清楚的,可是看了上面之后,我都糊涂了,什么叫“事件”啊?在windows编程中消息的概念是大家都有的,但是“事件”好像是楼主自己想出来的概念吧!拿楼主自己举的例子,处理WM_LBUTTONDOWN,这个是一个消息,你添加的是一个消息的处理函数,当然MFC编程不同于SDK,它在内部是要进行消息映射的,也就是将消息和消息处理函数关联到一起。面板上有一个按钮,你要处理单击按钮,这个也是消息,叫WM_COMMAND消息,所以的子控件被点击,菜单被点击,都会产生这个消息,当然MFC也会进行相应的映射。
    所以楼主最好还是看一下《windows程序设计》对一些基本的概念清理一下,很多问题理解起来就清楚多了。
      

  3.   

    你说的两种添加方式是一样的
    你添加了消息
    也得映射到BN_CLICKED
      

  4.   

    事件信号还是有的,是在多线程编程中要用到,可以指一个消息的到来或者一段的代码的执行。 
    LZ这里的消息和事情是一样的概念。
    =============
    那个内核对象的事件确实是有的,不过和楼主这个差别也太大了吧。好像VB之类的书中有类似于楼主所说的事件这个说法,不过是讲VB的书中不想提消息而自己发明的一个说法吧。
      

  5.   

    Windows程序是事件驱动的发一个消息 就产生一个事件 就调用了对应的消息处理函数对于用户来说 是发了一条消息
    对于程序来说 就产生一个事件建议楼主精读一本书  别搞晕了
      

  6.   

    看lz提到的情况的话,lz所说的消息和事件其实应该都是在说message而已
    一个控件所谓的添加响应事件,它的本质就是把该控件某种行为时会发出的消息截获了,然后放到一个你自己定义的地方去处理,这个地方好像叫回调函数?还是响应函数?大概差不多吧
    可能有些地方会把一个按键的按下之类的动作说成是一个“事件”,所以楼主才会搞混吧?其实都是发出了一个消息而已。别说点击鼠标还是按下按键,就算鼠标在面板范围内移动,也是会发出消息的,只是这个消息我们没有去注册,程序就按默认处理了,所以我们也就不用去留意了而已。
    events也有一种解释是作为事件信号用在多线程同步互斥方面的,这个应该跟这里无关吧
      

  7.   

    http://blog.csdn.net/lixiaohuprogram/archive/2008/04/29/2341359.aspx
      

  8.   

    不对,我看了一些资料,有的人是这么说
    windows程序设计 是“基于消息,事件驱动”;事件这个概念也不是我想的啊,在属性中“event”,也有“message”。
    对于用户来说,只有事件这个概念,用户在ui上的控件操作产生事件,
    对于程序来说,一个事件会引发一个或者多个消息,然后程序来处理消息和消息对应的函数