MFC中消息和事件 好像有点混淆
通常一般的“事件”有的是在消息中实现,有的却是在事件events中实现,怎么回事呢?
比如我对一个空面板点击鼠标左键,可以再消息中添加一个wm_lbuttondown消息。可以执行一个事件方法。
如果面板上有一个按钮我发现好像即可以添加消息也可以再属性面板中events事件中添加那个按钮的事件,很奇怪啊。我感觉是不是只要是ui界面上的控件都可以添加事件events呀
通常一般的“事件”有的是在消息中实现,有的却是在事件events中实现,怎么回事呢?
比如我对一个空面板点击鼠标左键,可以再消息中添加一个wm_lbuttondown消息。可以执行一个事件方法。
如果面板上有一个按钮我发现好像即可以添加消息也可以再属性面板中events事件中添加那个按钮的事件,很奇怪啊。我感觉是不是只要是ui界面上的控件都可以添加事件events呀
解决方案 »
- NDIS中间层过滤驱动中,捕获不到对方发回的ARP应答帧
- 如何用VC++执行Windows Script Host脚本
- 怎样获得视图的大小?
- 讨论:有啥技术可以查看当前在运行的进程,包括隐藏的很好的进程?
- (急)如何编写一个ocx文件?
- 我创建了一个基于CButton的类CMyButton,我想用bitmap或icon来显示,在drawitem里该怎么写?
- 50分问一个关于ToolBar使用位图的问题!
- 想问一下?东方影都的Skin技术的谈讨
- CDaoRecordSet问题,给80分
- "我爱PC"这个字符串的长度是多少?
- 窗口全透明,不能响应鼠标消息,如果半透明,画笔颜色也会变淡,在上面绘图效果又很差
- 树形控件在析构时候用手动释放节点吗?
通常一般的“事件”有的是在消息中实现,有的却是在事件events中实现,怎么回事呢?
比如我对一个空面板点击鼠标左键,可以再消息中添加一个wm_lbuttondown消息。可以执行一个事件方法。
如果面板上有一个按钮我发现好像即可以添加消息也可以再属性面板中events事件中添加那个按钮的事件,很奇怪啊。 我感觉是不是只要是ui界面上的控件都可以添加事件events呀
===============
对MFC本来我觉得自己还是清楚的,可是看了上面之后,我都糊涂了,什么叫“事件”啊?在windows编程中消息的概念是大家都有的,但是“事件”好像是楼主自己想出来的概念吧!拿楼主自己举的例子,处理WM_LBUTTONDOWN,这个是一个消息,你添加的是一个消息的处理函数,当然MFC编程不同于SDK,它在内部是要进行消息映射的,也就是将消息和消息处理函数关联到一起。面板上有一个按钮,你要处理单击按钮,这个也是消息,叫WM_COMMAND消息,所以的子控件被点击,菜单被点击,都会产生这个消息,当然MFC也会进行相应的映射。
所以楼主最好还是看一下《windows程序设计》对一些基本的概念清理一下,很多问题理解起来就清楚多了。
你添加了消息
也得映射到BN_CLICKED
LZ这里的消息和事情是一样的概念。
=============
那个内核对象的事件确实是有的,不过和楼主这个差别也太大了吧。好像VB之类的书中有类似于楼主所说的事件这个说法,不过是讲VB的书中不想提消息而自己发明的一个说法吧。
对于程序来说 就产生一个事件建议楼主精读一本书 别搞晕了
一个控件所谓的添加响应事件,它的本质就是把该控件某种行为时会发出的消息截获了,然后放到一个你自己定义的地方去处理,这个地方好像叫回调函数?还是响应函数?大概差不多吧
可能有些地方会把一个按键的按下之类的动作说成是一个“事件”,所以楼主才会搞混吧?其实都是发出了一个消息而已。别说点击鼠标还是按下按键,就算鼠标在面板范围内移动,也是会发出消息的,只是这个消息我们没有去注册,程序就按默认处理了,所以我们也就不用去留意了而已。
events也有一种解释是作为事件信号用在多线程同步互斥方面的,这个应该跟这里无关吧
windows程序设计 是“基于消息,事件驱动”;事件这个概念也不是我想的啊,在属性中“event”,也有“message”。
对于用户来说,只有事件这个概念,用户在ui上的控件操作产生事件,
对于程序来说,一个事件会引发一个或者多个消息,然后程序来处理消息和消息对应的函数