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.OnCmdMsg()
根据接收消息的类,OnCmdMsg()函数可能会在一个称为命令路由的过程中传递命令消息和控制通知。例如,如果拥有窗口的类是一个框架类,那么命令和通知消息也被传递给视图和文档类,并且为该类找到一个消息处理函数。
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()
response函数响应WM_MOVE消息,该消息指示窗口正在移动。
9.OnChildNotify()
这个函数是一个重载函数,作为消息映射的一部分被调用,告诉父窗口刚刚创建了一个窗口。
MFC应用程序关闭窗口的顺序(无模式窗口)
1.OnClose()
消息函数响应窗口的WM_CLOSE消息,并在单击关闭按钮时发送该消息[Page]
2.OnDestroy()
response函数响应窗口的WM_DESTROY消息,并在窗口将被销毁时发送此消息。
3.OnNcDestroy()
response函数响应窗口的WM_NCDESTROY消息,并在窗口被销毁时发送该消息。
4.PostNcDestroy()
重载函数,作为处理OnNcDestroy()函数的最后一个动作,由CWnd调用。
MFC应用程序中打开模式对话框的函数调用序列
1.多模态()
重载函数,重载DoModal()成员函数
2.PreSubclassWindow()
重载该函数,允许窗口首先被子类化。
3.OnCreate()
message函数响应WM_CREATE消息,并发送该消息以告知窗口已经创建。
4.OnSize()
response函数响应WM_SIZE消息,并发送该消息来告知窗口大小的变化。
5.OnMove()
response函数响应WM_MOVE消息,并发送该消息来告诉窗口它正在移动。
6.OnSetFont()
message函数响应WM_SETFONT消息,并发送此消息以允许对话框中控件的字体被更改。
7.OnInitDialog()
Message函数,它响应WM_INITDIALOG消息,并发送此消息以允许在对话框中初始化控件,或者创建一个新的控件。
8.OnShowWindow()
消息响应函数,响应WM_SHOWWINDOW消息,由SHOWWINDOW()函数调用。
9.OnCtlColor()
响应函数,响应WM_CTLCOLOR消息,由父窗口发送,以改变对话框或对话框上控件的颜色。
10.OnChildNotify()
重载函数,作为WM_CTLCOLOR消息的结果发送
MFC应用程序中关闭模式对话框的顺序
1.OnClose()
消息响应函数,响应WM_CLOSE消息,并在单击“关闭”按钮时调用。
2.OnKillFocus()
消息响应函数,响应WM_KILLFOCUS消息,在窗口即将失去键盘输入焦点之前发送。
3.OnDestroy()
响应函数,响应WM_DESTROY消息,在窗口即将被销毁时发送。
4.OnNcDestroy()
响应WM_NCDESTROY消息的消息函数,在窗口被销毁时发送。
5.PostNcDestroy()
重载该函数,CWnd调用该函数作为处理OnNcDestroy()函数的最后一个操作。
打开无模式对话框的顺序
1.PreSubclassWindow()
重载该函数,允许用户首先对窗口进行子分类。
2.OnCreate()
作为对WM_CREATE消息的响应,response函数发送此消息,告知窗口已创建[Page]
3.OnSize()
response函数响应WM_SIZE消息,并发送该消息来告知窗口大小的变化。
4.OnMove()
response函数响应WM_MOVE消息,并发送该消息来告诉窗口它正在移动。
5.OnSetFont()
response函数响应WM_SETFONT消息,并发送此消息以允许对话框中控件的字体被更改。
这些都是按照给定的顺序执行的!
只有清楚的了解应用的执行顺序,才能知道什么时候执行什么,什么时候写代码在哪里处理什么!
这只是我总结的一点经验,希望能对初学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.OnCmdMsg()
根据接收消息的类,OnCmdMsg()函数可能会在一个称为命令路由的过程中传递命令消息和控制通知。例如,如果拥有窗口的类是一个框架类,那么命令和通知消息也被传递给视图和文档类,并且为该类找到一个消息处理函数。
MFC应用程序创建窗口的过程
1.PreCreateWindow()
这个函数是一个重载函数,在这个函数中你可以改变创建参数(你可以设置窗口样式等等。)在创建窗口之前。
2.PreSubclassWindow()
这也是一个重载函数,它允许窗口首先被子类化。
3.OnGetMinMaxInfo()
这个函数是一个消息响应函数,它响应WM_GETMINMAXINFO消息,允许你设置窗口的最大或最小尺寸。
4.OnNcCreate()
这个函数也是一个消息响应函数,它响应WM_NCCREATE消息,发送消息告诉窗口的客户区即将被创建[Page]
5.OnNcCalcSize()
这个函数也是一个消息响应函数,响应WM_NCCALCSIZE消息,它的作用是允许窗口客户区大小改变。
6.OnCreate()
该功能也是消息响应功能。作为对WM_CREATE消息的响应,它发送一条消息告诉我们一个窗口已经被创建了。
7.OnSize()
这个函数也是一个消息响应函数,它响应WM_SIZE消息并发送这个消息来告知窗口大小已经改变。
8.OnMove()
response函数响应WM_MOVE消息,该消息指示窗口正在移动。
9.OnChildNotify()
这个函数是一个重载函数,作为消息映射的一部分被调用,告诉父窗口刚刚创建了一个窗口。
MFC应用程序关闭窗口的顺序(无模式窗口)
1.OnClose()
response函数响应窗口的WM_CLOSE消息,并在单击CLOSE按钮时发送该消息。
2.OnDestroy()
response函数响应窗口的WM_DESTROY消息,并在窗口将被销毁时发送此消息。
3.OnNcDestroy()
response函数响应窗口的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()重载该函数并发送[Page]作为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消息,并发送此消息以允许对话框中控件的字体被更改。
这些都是按照给定的顺序执行的!
只有清楚的了解应用的执行顺序,才能知道什么时候执行什么,什么时候写代码在哪里处理什么!
这只是我总结的一点经验,希望能对初学MFC的人有所帮助!