MFC学习笔记之OnPaint和OnDraw之间的关系

来源:互联网 发布:郫县 unity3d培训 编辑:程序博客网 时间:2024/05/16 06:41

       以前一直疑惑,又mfc向导产生的文档类模板程序中绘图用的是OnDraw,而自动生成的对话框类程序中绘图用的是OnPaint,如果在文档类程序中添加OnPaint消息后,OnDraw就会失效。现在终于搞明白了,如果我们没有自定义OnPaint消息,则当WM_PAINT消息产生时,将会被其基类CView所截获,即调用CView::OnPaint函数,其定义如下

        void CView::OnPaint(){

                 // standard paint routine

                CPaintDC dc(this);

                OnPrepareDC(&dc);

                OnDraw(&dc);

       }

由以上定义可以看出,其实是CView中的OnPaint函数调用了OnDraw函数。如果我们自定义了OnPaint函数,则消息将被自定义的OnPaint函数所截获,而自定义的OnPaint函数中又没有调用OnDraw函数,故而OnDraw函数就失效了。

0 0
原创粉丝点击