【问题标题】:CScrollView and window sizeCScrollView 和窗口大小
【发布时间】:2008-09-29 02:29:14
【问题描述】:

(MFC 问题)在 CScrollView 中确定当前显示的客户区的最佳方法是什么?我只需要可见部分的大小,所以 GetClientRect() 在这里不起作用。

【问题讨论】:

    标签: c++ winapi mfc


    【解决方案1】:

    您确实需要使用 GetClientRect(),但我认为您问错了问题。在滚动视图中并不是有一个非常大的客户端窗口可以物理滚动。相反,当您滚动时,会调整 DC 的 viewporttext 和映射模式,这会使您的视图看起来比实际更大。所以,如果你想从当前视口的右下角的左上角画一条线,你确实需要GetViewPortOrg()和GetViewportExt()。如果这些返回错误的值,则说明您在使用 CScrollView 时出现了问题。你调用 SetScrollSizes() 了吗?

    【讨论】:

      【解决方案2】:

      在您的 OnDraw() 函数中,您可以调用 pDC->GetViewportOrg 和 pDC->GetViewportExt。

      编辑:抱歉,我忘记了视口范围只是缩放因子。我同意您在这里真正需要的是客户矩形。

      【讨论】:

        【解决方案3】:

        是的,你们都是对的。 GetClientRect 正是我所需要的。我的脑子放了个屁……

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-10-23
          • 2012-09-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多