hur.cn - 华软网

 热门搜索

关于坐标显示的问题!

  作者:未知    来源:网络    更新时间:2011/10/4
我有一个单文档应用程序,视类用的是CScrollView并且在OnInitialUpdate() 定义如下
void CSapphireSoftView::OnInitialUpdate() 
{
CScrollView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class
SIZE Size  = {30000,20000};
SIZE pSize = {100,100};
SIZE lSize = {10,10};
SetScrollSizes(MM_TEXT,Size,pSize,lSize);
}
我想在我的状态栏上显示我鼠标的位置我的做法如下
void CSapphireSoftView::OnUpdatePosition(CCmdUI *pCmdUI)
{
CPoint pt;
GetCursorPos(&pt);

this->ScreenToClient(&pt);

CString strShow;
strShow.Format("x %3d, y %3d",pt.x,pt.y);

pCmdUI->SetText(strShow);
}
现在有个问题,我要显现的是整个CScrollView的客户区坐标,而现在得到的是我客户区的坐标,坐标值就是范围就是客户区,
大概600,800左右
可是我要求的坐标范围是30000,200000

这个请教应该怎么实现?

---华软 网友回答---
加上滚动条的偏移量
C++">
CPoint pt;
GetCursorPos(&pt);
this->ScreenToClient(&pt);
pt.x += ::GetScrollPos(m_hWnd, SB_HORZ);
pt.y += ::GetScrollPos(m_hWnd, SB_VERT);

---华软网友回复---
引用 1 楼 firefly3233 的回复:
加上滚动条的偏移量

C/C++ code

CPoint pt;
GetCursorPos(&pt);
this->ScreenToClient(&pt);
pt.x += ::GetScrollPos(m_hWnd, SB_HORZ);
pt.y += ::GetScrollPos(m_hWnd, SB_VERT);


感谢深夜回题,帮助很到位,谢谢      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。