2013-07-09 40 views
0

我的應用程序是基於mfc CDialog的。 CImageView繼承自CScrollView。我的圖像是1600x 1000.我的客戶區域比圖像大小小。我喜歡獲取我點擊或移動鼠標的像素座標。無法獲得正確的x和y位置

void CImageView::OnLButtonDown(UINT nFlags, CPoint pt) 
{ 
CString s; 
s.Format("%d %d", pt.x,pt.y); 
AfxMessageBox(s); 
} 

如果我滾動垂直和水平條一路底部和右分別 我可以看到像素在最右下角,但其座標(X,Y)是不正確的,它是小於1600x1000。如果滾動條移動,我如何獲得正確的像素座標?看起來滾動條移動時,1,1像素位置也會移動。

回答

1

使用GetScrollPositionMSDN 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); 
}