CRgn ScreenToClient

时间:2013-10-07 12:44:22

标签: visual-c++ mfc

我有几个Custom Drawn CStatic,使用SetWindowRgn为每个人提供不规则(非矩形)形状。我需要使每个控件OnEraseBkgnd后面的区域无效,我想在父CWnd::InvalidateRgn上使用CDialog,但我需要将CRgn翻译成Cwnd::ScreenToClient(CRgn *)父母的坐标。我希望有类似CWnd::ScreenToClient的东西,但据我所知,没有这样的东西存在。

如何获得带有CRgn的{{1}}的等价物?

1 个答案:

答案 0 :(得分:3)

  • 使用GetRegionData
  • CRgn区域拆分为矩形
  • ScreenToClient个别矩形
  • 使用CreateFromData
  • 将输出结合回区域

备用选项CRgn::OffsetRgn使用ScreenToClient为单个点获得的距离来消除区域。