dc.TextOut(100,100,"Hello,Word!");//dc为打印机设备上下文为何上面的代码在不同的打印机上输出的位置不同.
我该如何控制字符串在各种不同的打印机上输出在同一位置?
谢谢.

解决方案 »

  1.   

    可以定义一种特殊的映射模式,称为逻辑TWIPS,此时一个逻辑单位等于1/1440逻辑英寸。这种映射模式独立于操作系统,也独立于显示器的分辨率。这样即可实现在不同的打印机上打印出相同的大小,与打印机无关。
    如下:
    void CMyView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
    {
    if(pDC->IsPrinting())
      {
        pDC->SetMapMode(MM_ANISOTROPIC);
        pDC->SetWindowExt(1440,1440);
        pDC->SetWindowExt(pDC->GetDeviceCaps(LOGPIXELSX),
                          -pDC->GetDeviceCaps(LOGPIXELSY));
      }
    }