程序如下:
void CGraphView::OnDraw(CDC* pDC)
{
m_rect.SetRect(0,0,980,670);//m_rect:画图使用的矩形大小
pDC->SetMapMode(MM_LOENGLISH);
DrawPhoto(pDC);//在m_rect矩形中画图
}
都是xp机器,平面分辨率都是1024*768
显示结果为什么却是不一样呢?跟什么有关?
请执教
原因正确验证后,立即揭帖!

解决方案 »

  1.   

    用GetWindowRect看看实际窗口的大小呢
      

  2.   

    用GetWindowRect看看实际窗口的大小
    ::GetWindowRect(this->GetSafeHwnd(),&m_rect);
    m_rect = (46,713,0,1024);
    差不多就是真个屏幕(上面是工具条,下面是状态条)
    可是我在CPoint(1120,-33)上写字,在视图上都可以看到,奇怪原因可能是什么呢?不解ING
      

  3.   

    能不能详细说说?
    或者该怎样做?
    会不会更模式转换SetMapMode有关呢!
    SetMapMode这个函数也不是很明白,谁能讲一下吗?主要是用途
      

  4.   

    SetMapMode时用来设置屏幕坐标系的,MM_LOENGLISH的模式是:
    Each logical unit is converted to 0.01 inch. Positive x is to the right; positive y is up
    可能就是这里出的问题。不过还是有点奇怪。我的意思是你在不同的机器上都看看窗口的大小。
      

  5.   

    SetMapMode有问题.
    MM_LOENGLISH采用英寸为单位。每单位1/100英寸。Y轴方向是从下往上为正,你的程序中原点应该还在屏幕左上角,所以纵坐标全部为负数。而且用的数值我猜是想用是以像素为单位。可以以显示器表面的物理尺寸乘以每0.1英寸的单位数(10),然后再除以254就得到窗口宽度了