消息的处理流程

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函数!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值