以菜单栏为例子
如果MainFrame发了一个WM_NCPAINT消息,那么MainFrame::OnNcPaint()响应了,MainFrame::OnDrawItem响应了,菜单栏的::OnOwnerDraw响应了,难道我画三次菜单?什么原理?最好有个例子或文章

解决方案 »

  1.   

    WM_NCPAINT 非客户区重绘OnNcPaint 当非客户区需要重画时,框架调用这个成员函数。缺省的实现画出窗口的框架。 OnDrawItem 当控件或菜单的可视状态发生变化时,框架为自画按钮控件、组合框控件、列表框控件或者菜单的拥有者调用这个成员函数。最后调用的是DrawItem 通过框架来调用,其发生于拥有者菜单的可视部分有所改变  层层嵌套