我的应用程序是mfc CDialog。 CImageView继承自CScrollView。我的图像是1600x 1000.我的客户区域小于图像大小。我喜欢得到我点击的像素坐标或移动鼠标。
void CImageView::OnLButtonDown(UINT nFlags, CPoint pt)
{
CString s;
s.Format("%d %d", pt.x,pt.y);
AfxMessageBox(s);
}
如果我将垂直和水平条一直滚动到底部和右边, 我可以查看最右下角的像素,但其坐标(x,y)不正确,小于1600x1000。如果移动滚动条,我怎样才能获得正确的像素坐标?当滚动条移动时,1,1像素位置也会移动。
答案 0 :(得分:1)
使用GetScrollPosition
(MSDN here)根据滚动条位置检索客户区左上角的xy坐标,然后添加从鼠标点击中获得的xy偏移量。
void CImageView::OnLButtonDown(UINT nFlags, CPoint pt)
{
CPoint ptImage = GetScrollPosition() + pt;
CString s;
s.Format("%d %d", ptImage.x, ptImage.y);
AfxMessageBox(s);
}