在子窗口中的父窗口中重绘在mfc中的onPaint

时间:2013-07-27 19:50:29

标签: c++ mfc

我正在尝试在mfc中实现类似的东西:

包含几个子窗口的父窗口。当窗口被拖动到父窗口内的任何位置时,我希望在子窗口周围出现一些水平和垂直网格线。为此,我正在跟踪子项的OnPaint()处理程序中的移动并访问父项并在子项周围绘制这些网格线。但它的表现并不像我想要的那样。

我的猜测是孩子的OnPaint()只更新孩子的绘图区域,所以即使我访问父母的DC,我也不能在它上面绘制任何东西,除非它被重绘?

有人能提出一种更简洁的方法来实现上述功能吗?我究竟做错了什么?我需要在孩子的OnPaint()

中发生一切

2 个答案:

答案 0 :(得分:0)

一种方法是将数据传递给父窗口并调用其Invalidate函数。然后它会在自己的OnPaint中绘制网格线。

或者您可以直接在子窗口的父窗口上绘制,但使用父级的GetDC函数而不是使用子级的DC。

答案 1 :(得分:0)

解决此问题的一种方法是在父客户区顶部使用UpdateLayeredWindow绘制半透明网格窗口,同时将子窗口排列在其上。然后可以在布置完成后销毁网格窗口。通过这种方式,现有显示代码将需要进行最小的更改。