在一个带有垂直(水平)滚动条的视图窗口中,鼠标点击窗口的客户区左上角后,通过 LButtonDown()能获得 point.x = 0, point.y = 0; (这是正确的)滚动窗口的垂直(水平)滚动条后,鼠标再次点击窗口的客户区左上角点击后,通过 LButtonDown()能获得的 仍然 是 point.x = 0, point.y = 0; (这不是我想要的)这时我想获得的point.x 与 point.y 应该是加上垂直(水平)滚动的距离,请问应该怎样把获得的point.x = 0, point.y = 0 转换 成整个窗口客户区的绝对 X,Y 或 怎样获取 垂直(水平)滚动的距离呢谢谢
我添加了消息响应
void CXXXView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO:
pScrollBar->GetScrollPos(); //程序在这里异常了
CScrollView::OnHScroll(nSBCode, nPos, pScrollBar);
}
当点击滚动条时,程序运行到pScrollBar->GetScrollPos()就跑飞了,
应该怎样获得滚动条滚动距离呢
CPoint pt=-m_pScrollView->GetDeviceScrollPosition();
pDC->SetViewportOrg(pt);
pDC->LPtoDP(鼠标点击获取的点);
CClientDC dc(this);
OnPrepareDC(&dc);
dc.DPtoLP(&point);
在其基类中实际上就是调用了
CPoint pt=-m_pScrollView->GetDeviceScrollPosition();
pDC->SetViewportOrg(pt);