mfc控件消息,已经是封装好的东西了,消息类型分为多种,有WM开头的windows消息,还有自己通过添加的ON_COMMAND消息等等; 添加消息,如果是WM消息,就实现相应的虚函数,若是ON_COMMAND消息就建立相应的消息映射
菜单消息,工具栏消息都是命令消息,mfc中命令消息的处理流程如下:
(下面的每个类中都可以定义相关的消息和消息处理函数,而处理过程就是箭头所指过程。mfc程序是按此顺序处理命令消息的)
1.单文档程序: view-->doc-->MainFrame-->app
2.多文档程序:
文档没有打开:MainFrame-->app
文档打开:view-->doc-->childFrame->app-->MainFrame
在CEditView的子类中重载虚函数onDraw并进行绘图操作,但是运行后没起作用的原因。
onDraw中设置断点,运行后发现并没有进入断点。原因如下:WM_PAINT消息导致调用相关的onpaint消息响应函数,如果是从CView类中派生的类,其调用CView::OnPaint(){
CPaintDC dc(this);
OnPrepareDC(&dc);
OnDraw(&dc);
}
但是对于从CEditView类中继承的类来说,由于CEditView继承自CCtrlView,而CCtrlView的OnPaint实现如下:CCtrlView::OnPaint(){
//this is done to avoid CView :: OnPaint
Default();
}可见其并没有调用OnDraw虚函数。
因此想在CEditView的派生类中绘图,需要重载OnPaint函数!