我想在代码中实现打印纸张的方向调整为横向,但是结果总还是纵向,代码如下:
void OnMyPrint( void )
{
CDC pd;
CPrintDialog printDlg(FALSE);
if(printDlg.DoModal()==IDOK)
{
pd.Attach(printDlg.GetPrinterDC());
pd.m_bPrinting = TRUE;
DOCINFO di;
memset(&di, 0, sizeof(DOCINFO));
di.cbsize = sizeof(DOCINFO);
di.lpszDocName = "打印测试";
di.lpszOutput = (LPTSTR)NULL;

di.lpszDatatype= (LPTSTR)NULL;
di.fwType = 0;
di.StartDoc(&di);
PrintDraw(&pd);//绘图代码
pd.StartPage();
pd.EndPage();
pd.EndDoc();
}
}
基本的打印代码就在上面了,我将printDlg指向的那个控制纸张方向的变量设置为2,打印出来的仍然是纵向。(那个变量叫什么记不起了,新装的系统没MSDN)
还有就是我在PrepareDC里面设置pDC->SetViewPortOrg(200, 0);
想让打印的结果位于纸张中心,也是无效的,请问问题在哪里啊

解决方案 »

  1.   

    void OnMyPrint( void )
    {
    CDC pd;
    CPrintDialog printDlg(FALSE);
    if(printDlg.DoModal()==IDOK)
    {
    pd.Attach(printDlg.GetPrinterDC());
    pd.m_bPrinting = TRUE;
    DOCINFO di;
    memset(&di, 0, sizeof(DOCINFO));
    di.cbsize = sizeof(DOCINFO);
    di.lpszDocName = "打印测试";
    di.lpszOutput = (LPTSTR)NULL;

    di.lpszDatatype= (LPTSTR)NULL;
    di.fwType = 0;
    di.StartDoc(&di);
    pd.StartPage();<----------------------------移上来
    PrintDraw(&pd);//绘图代码
    pd.EndPage();
    pd.EndDoc();
    }
    }
      

  2.   

    那pd->SetViewPortOrg(200, 0)应该放在什么地方才有效的