我正在尝试在mfc中实现类似的东西:
包含几个子窗口的父窗口。当窗口被拖动到父窗口内的任何位置时,我希望在子窗口周围出现一些水平和垂直网格线。为此,我正在跟踪子项的OnPaint()处理程序中的移动并访问父项并在子项周围绘制这些网格线。但它的表现并不像我想要的那样。
我的猜测是孩子的OnPaint()只更新孩子的绘图区域,所以即使我访问父母的DC,我也不能在它上面绘制任何东西,除非它被重绘?
有人能提出一种更简洁的方法来实现上述功能吗?我究竟做错了什么?我需要在孩子的OnPaint()
中发生一切答案 0 :(得分:0)
一种方法是将数据传递给父窗口并调用其Invalidate函数。然后它会在自己的OnPaint中绘制网格线。
或者您可以直接在子窗口的父窗口上绘制,但使用父级的GetDC函数而不是使用子级的DC。
答案 1 :(得分:0)
解决此问题的一种方法是在父客户区顶部使用UpdateLayeredWindow
绘制半透明网格窗口,同时将子窗口排列在其上。然后可以在布置完成后销毁网格窗口。通过这种方式,现有显示代码将需要进行最小的更改。