MFC设置滚动条时出问题 绘图没问题,但是一拖动滚动条就出现这样了,是哪出问题了。... 绘图没问题,但是一拖动滚动条就出现这样了,是哪出问题了。 展开 我来答 可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。 滚动条 mfc 搜索资料 1个回答 #热议# 为什么说不要把裤子提到肚脐眼? bhtzu 2015-02-12 · TA获得超过1.1万个赞 知道大有可为答主 回答量:8088 采纳率:85% 帮助的人:4309万 我也去答题访问个人页 关注 展开全部 将窗口最小化再还原,看看是不是只剩下一个。通常这是因为在绘图的时候没有计算滚动坐标造成的。MFC为CScrollView专门有一组CDC函数,叫DPtoLP/LPtoDP,就是计算滚动坐标和视口坐标的转换,一般绘图坐标要通过计算后绘制。 更多追问追答 追问 这个只是在滑动滚动条出现,最小化返回显示正常 追答 就是我说的问题,绘制的时候没有进行坐标计算,用逻辑坐标值在物理DC上绘图。 追问 在点保存前,我转换了 OnPrepareDC(&dc); dc.DPtoLP(&m_ptOrigin); dc.DPtoLP(&point); CGraph *graph=new CGraph(m_index,m_ptOrigin,point); m_ptrarray.Add(graph); CScrollView::OnLButtonUp(nFlags, point);还是不行 追答 这是鼠标点击的代码,关键看OnDraw里面的代码。 追问 我在OnDraw里是利用m_ptrarray进行处理,那要怎么做呢 追答 你在鼠标事件里面,通过一个array记录逻辑坐标是正确的。而在OnDraw里面,从array里面每取出一个记录,都应该再次反向转换后绘制。从图和描述看,就是因为在OnDraw里面使用了错误的坐标(没有转换或者转换错误)进行绘制造成的。理论上,CScrollView应该在OnDraw里面使用逻辑坐标,具体要看OnDraw代码。 追问 你好,我在buttonup里这么做不可以吗?只要确定点的坐标合适就行 OnPrepareDC(&dc); dc.DPtoLP(&m_ptOrigin); dc.DPtoLP(&point);CGraph *graph=new CGraph(m_index,m_ptOrigin,point); m_ptrarray.Add(graph); 追答 OnPrepareDC除了这个,其它都没问题,这个不确定是否OK。一般用GetDC再ReleaseDC更好些。 本回答由网友推荐 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询 其他类似问题 2020-01-29 MFC 对话框添加滚动条以后工具栏也跟着滚动,如何解决? 2014-08-07 MFC 对话框添加滚动条以后工具栏也跟着滚动,如何解决? 1 更多类似问题 > 为你推荐: