excel怎么把列排拆分:MFC中的消息路由

来源:百度文库 编辑:中财网 时间:2024/05/06 06:41:38

windows中的消息虽然很多,但是种类并不繁杂,大体上有3种:窗口消息、命令消息和控件通知消息。

  窗口消息大概是系统中最为常见的消息,它是指由操作系统和控制其他窗口的窗口所使用的消息。例如CreateWindow、DestroyWindow和MoveWindow等都会激发窗口消息,还有我们在上面谈到的单击鼠标所产生的消息也是一种窗口消息。

  命令消息,这是一种特殊的窗口消息,他用来处理从一个窗口发送到另一个窗口的用户请求,例如按下一个按钮,他就会向主窗口发送一个命令消息。

  控件通知消息,是指这样一种消息,一个窗口内的子控件发生了一些事情,需要通知父窗口。通知消息只适用于标准的窗口控件如按钮、列表框、组合框、编辑框,以及Windows公共控件如树状视图、列表视图等。例如,单击或双击一个控件、在控件中选择部分文本、操作控件的滚动条都会产生通知消息。 她类似于命令消息,当用户与控件窗口交互时,那么控件通知消息就会从控件窗口发送到它的主窗口。但是这种消息的存在并不是为了处理用户命令,而是为了让主窗口能够改变控件,例如加载、显示数据。例如按下一个按钮,他向父窗口发送的消息也可以看作是一个控件通知消息;单击鼠标所产生的消息可以由主窗口直接处理,然后交给控件窗口处理。

  其中窗口消息及控件通知消息主要由窗口类即直接或间接由CWND类派生类处理。相对窗口消息及控件通知消息而言,命令消息的处理对象范围就广得多,它不仅可以由窗口类处理,还可以由文档类,文档模板类及应用类所处理。

mfc的消息传递时从子类开始,如果子类没有,再寻找父类的消息处理函数

MFC程式的消息处理顺序
MFC, 顺序, 程序
MFC程式实际运用中处理消息的顺序
1.AfxWndProc()      该函数负责接收消息,找到消息所属的CWndobject,然后调用AfxCallWndProc
2.AfxCallWndProc() 该函数负责保存消息(保存的CONTENT 内容主要是消息标识符和消息参数)供程式实际运用以后实际运用,然后调用WindowProc()函数

3.WindowProc()      该函数负责发送消息到OnWndMsg()函数,如果未被处理,则调用DefWindowProc()函数

4.OnWndMsg()        该函数的功能首先按字节对消息停止排序,对于WM_comMAND消息,调用OnCommand()消息响应函数,对于WM_NOTIFY消息调用OnNotify()消息响应函数。任何被遗漏的消息将是唯一窗口消息。OnWndMsg()函数Search类的消息映像,以找到唯一能处理任何窗口消息的处理参数。如果OnWndMsg()函数无所不能找到那样的处理参数的话,则把消息返回到WindowProc()函数,由它将消息发送给DefWindowProc()函数

5.OnCommand()       该函数查看这也许则唯一控件通知(lParam参数不为NULL,如果lParam参数为空的话,说明该消息否则控件通知),如果它是,OnCommand()函数会试图将消息映射到制造通知的控件;如果他否则唯一控件通知(或者如果控件拒绝映射的消息)OnCommand()就会调用OnCmdMsg()函数

6.OnCmdMsg()        根据接收消息的类,OnCmdMsg()函数将在唯一称为命令传递(Command Routing)的过程中潜在的传递命令消息和控件通知。例如:如果拥有该窗口的类是唯一框架类,则命令和通知消息也被传递到视图和文档类,并为该类寻找唯一消息处理参数

MFC程式实际运用创建窗口的过程
1.PreCreateWindow()   该函数是唯一重载参数,在窗口被创建前,没去外国疑问在该重载参数中改变创建参数(没去外国疑问设置窗口风格等等)
2.PreSubclassWindow() 这也是唯一重载函数,允许首先子分类唯一窗口
3.OnMinMaxInfo()   该函数为消息响应函数,响应的是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.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.OnInitDialog()        消息响应函数,响应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() 重载函数,作为处理OnNcDestroy()函数的最后动作被CWnd调用

打开无模式对话框的顺序
1.PreSubclassWindow()    重载函数,允许用户首先子分类唯一窗口
2.OnCreate()             消息响应函数,响应WM_CREATE消息,发送此消息以告诉唯一窗口已经被创建
3.OnSize()               消息响应函数,响应WM_SIZE消息,发送此消息以告诉窗口大小除了变化
4.OnMove()               消息响应函数,响应WM_MOVE消息,发送此消息以告诉窗口正在移动
5.OnSetFont()            消息响应函数,响应WM_SETFONT消息,发送此消息以允许改变对话框中控件的字体

以上这一些的运行都是按给定的顺序运行!
只有清楚的了解程式实际运用的运行顺序,才能在编写代码的时间清楚,在什么时间因该运行什么,以及在什么地方该处理什么!