关于CScrollView滚动的奇怪问题
我想让文字始终在客户区的最左上角显示,当点击或拖动滚动条时依然在客户区的最左上角(0,0)显示。我跟综了下面的输出坐标,但是好像依旧不行,也不知道问题出在哪。
C/C++ code
void CMy11View::OnDraw(CDC* pDC)
{
CPoint ScrollPoint = GetDeviceScrollPosition();
CString strScroll = "";
strScroll.Format( "x = %d, y = %d\n", ScrollPoint.x, ScrollPoint.y );
TRACE( strScroll );
pDC->TextOut( ScrollPoint.x, ScrollPoint.y, strScroll );
pDC->TextOut( 15, 20, "hi" );
}
我点一下滚动条滚动15个象素
当我点击一下向右滚动的箭头时,"hi"正好显示在了客户区的最左边,但是strScroll却向左平移了15个象素。而这时的ScrollPoint.x确实为15,而且当多次点击滚动条时strScroll区域还有好多重影。
不知何解?
谢谢
[解决办法]
在你的那个帖子里面我已经回复了。
这个代码可以把坐标输出在可视屏幕的左上角。
你要在滚动的时候OnScroll中添加一个InvalidateRect(NULL);
使视图重新绘制。
[解决办法]
textout的参数是逻辑坐标。
getDeviceScrollPosition返回的是客户坐标。
而且你这样写后来的textout显示了,而以前的textout还有,所以还会产生重影。
不要用这种方法来做