1

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

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

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

任何人都可以提出一种更简洁的方法来实现上述功能吗?我究竟做错了什么?我需要在孩子的 OnPaint() 中发生一切

4

2 回答 2

0

UpdateLayeredWindow解决这个问题的一种方法是在父客户区的顶部绘制一个半透明的网格窗口,同时将子窗口安排在它上面。然后可以在排列完成后销毁网格窗口。这样,现有显示代码所需的更改将最少。

于 2013-11-11T06:16:03.953 回答
0

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

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

于 2013-07-27T21:19:50.520 回答