MFC消息和事件的理解?举个通俗易懂的例子说明

MFC消息和事件的理解?举个通俗易懂的例子说明

消息是个名词,事件表示个动作,“收到消息”就发生了个事件。


1:windows OS事件驱动策略基于3种消息。标准消息、通告消息、命令消息。

2:“事件”就是“消息”,事件是有形形象的,是站在人类能理解的角度来定义的。消息是无形抽象的,是站在OS能理解的角度来定义的。

3:我把按下鼠标左键这一事件转换成WM_LBUTOONDOWN消息来告诉OS我做了按下鼠标左键这件事情。现在OS知道我做了按下鼠标左键这件事情了,那么OS怎么处理呢?


3.1:消息响应函数原型

//{{AFX_MSG(CMyView)
afx_msg void OnLButtonDown(UINT nFlags,CPoint point);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()

3.2:ON_WM_LBUTTONDOWN消息映射宏

BEGIN_MESSAGE_MAP(CMyView, CView)
   //{{AFX_MSG_MAP(CMyView)
   ON_WM_LBUTTONDOWN()
   //}}AFX_MSG_MAP
   // Standard printing commands
   ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
   ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
   ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()

3.3:消息响应函数的定义

void CMyView::OnLButtonDown(UINT nFlags, CPoint point) 
{
   // TODO: Add your message handler code here and/or call default
   MessageBox("WM_LBUTTONDOWN");
   CView::OnLButtonDown(nFlags, point);
}

4:至此,我们从按下鼠标左键到看到如下图的效果,OS完成了对事件做出的反应

追问

哦,非常感谢!

追答

不客气

温馨提示:内容为网友见解,仅供参考
无其他回答

MFC消息和事件的理解?举个通俗易懂的例子说明
1:windows OS事件驱动策略基于3种消息。标准消息、通告消息、命令消息。2:“事件”就是“消息”,事件是有形形象的,是站在人类能理解的角度来定义的。消息是无形抽象的,是站在OS能理解的角度来定义的。3:我把按下鼠标左键这一事件转换成WM_LBUTOONDOWN消息来告诉OS我做了按下鼠标左键这件事情。

mfc是什么意思?(mfc的缩写是什么?)
MFC创建了一个CString。这东西太小了。当你在网上搜索C代码片段复制的时候,会发现都是std:string代码,根本没有人写CString的版本。所以每次从网上复制代码,都要做一个从CString到std:string的转换;在代码的最后,我们必须再次进行从std:string到CString的转换。方法名 MFC中的方法名真的很神奇。举个...

MFC的关键技术
所以,在SDK编程中,会发送消息和在回调函数中处理消息就差不多可以写SDK程序了。在MFC中,看上去发送消息和处理消息比SDK更简单、直接,但可惜不直观。举个简单的例子,如果我们想自定义一个消息,SDK是非常简单直观的,用一条语句:SendMessage(hwnd,message\/*一个大于或等于WM_...

mfc中wm消息是谁发送的,发送给谁,能举一个具体的例子吗
mfc中wm消息一般是windows 消息,对于windows消息,微软一般以WM_前缀定义,而真正的windows消息不在于它定义的形式,而是在在于他的值,用户自定于消息必须大于WM_USER,小于这个值都是保留做系统消息。发给谁和谁发要区分情况。有一下消息是操作系统自动发给应用程序,比如鼠标消息,当然用户也可以模拟系统...

MFC中反射消息存在的必要性
主要是为了进行消息过滤,让按钮控件只是收到属于他的消息BN_SETFOCUS,另外也是进行消息分类.如果你自己创建一个属于自己的按钮窗口,根本不需要BN_SETFOCUS,直接处理WM_SETFOCUS就可以.

MFC怎样处理键盘事件。想用mfc写个游戏,不知道怎样用键盘控制。_百度知 ...
MFC有个OnKeyDown函数,具体有三个参数。afx_msg void OnKeyDown(UINT nChar,UINT nRepCnt,UINT nFlags );其中,第一个参数表示哪个按键。nChar Specifies the virtual key code of the given key. For a list of of standard virtual key codes, see Winuser.h 这些虚拟键值,有一些是系统常量,...

mfc语言究竟是神马玩意儿T_T
MFC是对WindowsAPI的封装,大大简化了我们的工作;学VC主要就是要学MFC,大约有100多个类,但常用的也就二三十个。应该象背4级单词一样将这些常用类搞懂;当然不要死记,要通过看帮助、看例子、动手练习来学会它们;而且,并非每个类的内部的所有函数都要学会,要日积月累。如果真的想成为高手,做个...

为什么说MFC是垃圾
其他的我想你也可以找到,再举个例子,MFC的CSocket是不能跨线程使用的,因为他内部使用了一个CWnd对象。OK,这个是封装细节,我无须考虑,但是由于CWnd不能跨线程使用,造成我的CSocket不能跨线程,这就变成一个需要开发者理解的实现细节了。你不看源代码你根本不知道什么原因。可以理解这个是基于Win3....

mfc怎样使对话框只运行一个实例
exe> 就通过映像名找到进程ID,在通过进程ID找那个主窗口,再和上面的发送消息一样 这种方法有个很大的漏洞,exe文件名改了后就失效.并这种方法效率很低,但是涉及的知识很广,利于学习用.如果想用第一中方法,我给你个读写内存共享变量的一个例子你.自己去实现 这个十分简单.要的留邮箱....

比较短 比较易懂的智力题
南怀瑾的书通俗易懂,语言幽默,而且南怀瑾先生融贯中西、博古通今,读他的书收获很大。相比之下,钱穆的书固然不错,但是语言相对版涩。《中国思想通俗讲话》还好一些,只是《中国历代政治得失》就有些枯燥了。 想学mfc,有什么比较易懂的书? 1.《精通MFC程序设计》 出版社:人民邮电出版社 作者:姚领田 全书由浅入深...

相似回答