首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

关于CScrollView滚动的奇怪有关问题

2012-03-29 
关于CScrollView滚动的奇怪问题我想让文字始终在客户区的最左上角显示,当点击或拖动滚动条时依然在客户区

关于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还有,所以还会产生重影。
不要用这种方法来做

热点排行