0

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

4

3 回答 3

2

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

于 2008-09-29T15:58:14.113 回答
-1

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

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

于 2008-09-29T02:41:19.117 回答
-1

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

于 2008-09-30T21:14:45.467 回答