在 OnDraw函数中 CClientDC dc(this); pDC=&dc;
CPoint point(0,0);
pDC->LPtoDP(&point);
y.Format("%d",point.y );
AfxMessageBox(y); 在滚动条拉动以后,输出的y仍然是0,为什么呢
CPoint point(0,0);
pDC->LPtoDP(&point);
y.Format("%d",point.y );
AfxMessageBox(y); 在滚动条拉动以后,输出的y仍然是0,为什么呢
pDC->LPtoDP(&point);
在MM_TEXT模式下,输出的永远一样,这与你拉动滚动条无关。
与之相关的是这个点可见转为不可见,或反之。
LP的原点是当前视图文件的原点。
对CPoint point(0, 0);定义的是在LP下的点,
而所有的绘图函数均是在DP中完成的,因为你只能在当前的屏幕上绘图。
所以DP的原点可以是LP中的任意点,视滚动条的位置和映射模式而定。
比如对一副2000*2000大小的图片,当你滚动到文件结尾时(滚动条拉到底),
DP的原点是客户区的屏幕坐标原点如(200, 200),
而这幅图显示在当前屏幕中的部分在LP下的坐标可能是(1500, 1500);
为了在当前屏幕显示,你需要LPToDP(&point),可能将需显示部分转化到(200, 200)到
(700, 700)这个客户区域,从而绘制出来。