字体和间距都增大了很多

解决方案 »

  1.   

    怎么设置才能实现在不同的打印机里都可以正常输出呢?改映射模式后一篇空白。请指教void CDeliverView::OnPrint(CDC* pDC, CPrintInfo* pInfo) {
    .............
    pDC->SetMapMode(MM_LOENGLISH);
    RECT rect;
    rect.left = 100;
    rect.right = nPageWidth;
    rect.top = 200;
    rect.bottom = 100;
    GetDlgItemText(IDC_COMPANY, strText);
    pDC->DrawText(strText, &rect, DT_CENTER); // 公司名
    ............
    }
      

  2.   

    void CXXXView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo) 
    {
    CView::OnPrepareDC(pDC, pInfo);
    pDC->SetMapMode(MM_ANISOTROPIC);

    CRect rcClient;
    GetClientRect(rcClient);

    CSize size(rcClient.right,rcClient.right);

    //设定当前的窗口
    pDC->SetWindowExt(size);

    //获取当前显示设备(显示器/打印机)每英寸中包含的象素点个数
    int xLogPixPerInch = pDC->GetDeviceCaps(LOGPIXELSX);
    int yLogPixPerInce = pDC->GetDeviceCaps(LOGPIXELSY);

    int xExt;
    int yExt;
    xExt = size.cx * xLogPixPerInch / 96 ;  // 96 为屏幕显示的每英寸象素数目
    yExt = size.cy * yLogPixPerInce / 96 ;

    pDC->SetViewportExt(xExt,yExt);
    }
      

  3.   

    楼上的大哥,没有反应哦,我放到onpaint里倒是有反应,客户区是550*790,但画个方框测试时x却是750,两种打印机上都是这样,但字体的大小却很不同,请指教
      

  4.   

    实在不行就在下字体的时候取一下打印机dc的dpi,然后下一个比例