mfc采用什么来处理信息,mfc消息循环
MFC应用程序1中的消息处理顺序。AfxWndProc()这个函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc。
2.AfxCallWndProc()这个函数负责保存消息(保存的内容主要是消息标识符和消息参数)供应用程序以后使用,然后调用WindowProc()函数。
3.WindowProc()这个函数负责向OnWndMsg()函数发送消息。如果不处理,则调用DefWindowProc()函数。
4.OnWndMsg()该函数的作用是首先按字节对消息进行排序,对于WM_COMMAND消息调用OnCommand()消息响应函数,对于WM_NOTIFY消息调用OnNotify()消息响应函数。任何错过的消息都将是窗口消息。OnWndMsg()函数搜索该类的消息图像,以找到可以处理任何窗口消息的处理程序。如果OnWndMsg()函数找不到这样的处理函数,消息将返回给WindowProc()函数,后者将消息发送给DefWindowProc()函数。
5.OnCommand()该函数检查这是否是一个控制通知(lParam参数不为空,如果lParam参数为空,则表示该消息不是一个控制通知)。如果是,OnCommand()函数将尝试将消息映射到制造通知的控件;如果不是控件通知(或者控件拒绝映射的消息),OnCommand()将调用OnCmdMsg()函数。
6.oncmdsg()根据所接收消息的类别,oncmdsg()函数可能会在一个称为命令路由的过程中传递命令消息和控制通知。例如,如果拥有窗口的类是一个框架类,那么命令和通知消息也被传递给视图和文档类,并且为该类找到一个消息处理函数。
MFC应用程序创建窗口的过程
1.PreCreateWindow()这个函数是一个重载函数,在这个函数中你可以改变创建参数(你可以设置窗口样式等。)在创建窗口之前。
2.PreSubclassWindow()这也是一个重载函数,允许窗口先被子类化。
3.OnGetMinMaxInfo()这个函数是一个消息响应函数,它响应WM_GETMINMAXINFO消息。允许设置窗口的最大或最小尺寸。
4.OnNcCreate()这个函数也是一个消息响应函数。作为对WM_NCCREATE消息的响应,它发送一个消息告诉窗口的客户区,它将很快被创建。
5.OnNcCalcSize()这个函数也是一个消息响应函数,响应WM_NCCALCSIZE消息,它的作用是允许窗口客户区大小改变。
6.OnCreate()这个函数也是一个消息响应函数。作为对WM_CREATE消息的响应,它发送一条消息告诉我们一个窗口已经被创建了。
7.OnSize()这个函数也是一个消息响应函数。作为对WM_SIZE消息的响应,发送此消息以告知窗口大小已更改。
8.OnMove()消息响应函数,响应WM_MOVE消息。发送此消息表示车窗正在移动。
9.OnChildNotify()这个函数被重载并作为消息映射的一部分被调用,告诉父窗口刚刚创建了一个窗口。
MFC应用程序关闭窗口的顺序(无模式窗口)
1.1号。OnClose()消息响应函数响应窗口的WM_CLOSE消息,并在单击关闭按钮时发送该消息。
2.OnDestroy()消息响应函数,响应一个窗口的WM_DESTROY消息,当一个窗口将要被销毁时发送这个消息。
3.三号。OnNcDestroy()消息响应函数响应窗口的WM_NCDESTROY消息,并在窗口被销毁时发送该消息。
4.四号。PostNcDestroy()重载函数,作为处理OnNcDestroy()函数的最后一个动作,由CWnd调用。
MFC应用程序中打开模式对话框的函数调用序列
1.重载domodal()函数和DoModal()成员函数。
2.PreSubclassWindow()重载该函数,允许首先对窗口进行子分类。
3.三号。OnCreate()消息响应函数响应WM_CREATE消息,并发送该消息以告知窗口已被创建。
4.OnSize()消息响应函数,它响应WM_SIZE消息并发送此消息以告知窗口大小的变化。
5.五号。OnMove()消息响应函数响应WM_MOVE消息,发送这个消息告诉窗口它正在移动。
6.六号。OnSetFont()消息响应函数响应WM_SETFONT消息,并发送此消息以允许对话框中控件的字体被更改。
7.OnnitDialog()消息响应函数,它响应WM_INITDIALOG消息,并发送此消息以允许对话框中的控件被初始化或创建新的控件。
8.八号。OnShowWindow()消息响应函数响应WM_SHOWWINDOW消息,由ShowWindow()函数调用。
9.OnCtlColor()消息响应函数,响应WM_CTLCOLOR消息,由父窗口发送,改变对话框或对话框上控件的颜色。
10.OnChildNotify()重载函数,作为WM_CTLCOLOR消息的结果发送。
MFC应用程序中关闭模式对话框的顺序
1.1号。OnClose()消息响应函数响应WM_CLOSE消息,当单击“关闭”按钮时调用该函数。
2.OnKillFocus()消息响应函数,响应WM_KILLFOCUS消息,在窗口即将失去键盘输入焦点之前发送。
3.OnDestroy()消息响应函数,响应WM_DESTROY消息,在窗口即将被销毁时发送。
4.四号。OnNcDestroy()消息响应函数响应WM_NCDESTROY消息,在窗口销毁后发送。
5.PostNcDestroy()重载函数,CWnd调用它作为处理OnNcDestroy()函数的最后一个动作。
打开无模式对话框的顺序
1.PreSubclassWindow()重载该函数,允许用户首先对窗口进行子分类。
2.2号。OnCreate()消息响应函数响应WM_CREATE消息,并发送该消息以告知窗口已被创建。
3.OnSize()消息响应函数,它响应WM_SIZE消息并发送此消息以告知窗口大小的变化。
4.四号。OnMove()消息响应函数响应WM_MOVE消息,发送这个消息告诉窗口它正在移动。
5.五号。OnSetFont()消息响应函数响应WM_SETFONT消息,并发送此消息以允许对话框中控件的字体被更改。
这些都是按照给定的顺序执行的!
只有清楚的了解应用的执行顺序,才能知道什么时候执行什么,什么时候写代码在哪里处理什么!