【发布时间】:2008-09-29 02:29:14
【问题描述】:
(MFC 问题)在 CScrollView 中确定当前显示的客户区的最佳方法是什么?我只需要可见部分的大小,所以 GetClientRect() 在这里不起作用。
【问题讨论】:
(MFC 问题)在 CScrollView 中确定当前显示的客户区的最佳方法是什么?我只需要可见部分的大小,所以 GetClientRect() 在这里不起作用。
【问题讨论】:
您确实需要使用 GetClientRect(),但我认为您问错了问题。在滚动视图中并不是有一个非常大的客户端窗口可以物理滚动。相反,当您滚动时,会调整 DC 的 viewporttext 和映射模式,这会使您的视图看起来比实际更大。所以,如果你想从当前视口的右下角的左上角画一条线,你确实需要GetViewPortOrg()和GetViewportExt()。如果这些返回错误的值,则说明您在使用 CScrollView 时出现了问题。你调用 SetScrollSizes() 了吗?
【讨论】:
在您的 OnDraw() 函数中,您可以调用 pDC->GetViewportOrg 和 pDC->GetViewportExt。
编辑:抱歉,我忘记了视口范围只是缩放因子。我同意您在这里真正需要的是客户矩形。
【讨论】:
是的,你们都是对的。 GetClientRect 正是我所需要的。我的脑子放了个屁……
【讨论】: