关于控件重绘函数/消息 OnPaint,OnDraw,OnDrawItem,DrawItem的区别

OnPaint()CWnd的类成员,同时负责响应WM_PAINT消息。

OnDraw()CVIEW的成员函数,并且没有响应消息的功能。这就是为什么你用VC生成的程序代码时,在视图类只有OnDraw没有OnPaint的原因。

我们一般用OnPaint维护窗口的客户区(例如我们的窗口客户区加一个背景图片),用OnDraw维护视图的客户区(例如我们通过鼠标在视图中画图)。

 

1.OnPaint: WM_PAINT
 
消息函数,接受到WM_PAINT消息时,首先调用的是onpaint()onpaint()再调用ondraw()

 OnPaint()-àOnDraw();

2.OnDraw:虚函数,需要重载

3.OnDrawItem: WM_DRAWITEM

 子控件有自画属性且控件需重画时,父窗口会调用该函数

  在具有Owner Draw属性的控件需要重画的时候,就会激发OnDrawItem

 当自画子按钮控件、组合框控件、列表框控件或菜单的可视部分需要被画出时调用这个函数

 OnDrawItem()-àDrawItem();

4.DrawItem:虚函数,需要重载

  如果使用DrawItem来自画控件,需要给控件加上自画样式,然后重载该控件类的自画函数(DrawItem)函数,
  如果该控件的父窗口提供了ON_WM_DRAWITEM消息映射宏,并重载了OnDrawItem函数,则重画消息会由父窗口处理,父窗口调用基类的OnDrawItem来调用派生的子控件的DrawItem函数.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值