(MFC 问题)在 CScrollView 中确定当前显示的客户区的最佳方法是什么?我只需要可见部分的大小,因此 GetClientRect() 在这里不起作用。
Alf Zimmerman
问问题
1144 次
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 回答