我想做成activex 在客户端用户想把ie内容大出来的时候,可以自动根据需要改变纸张的使用方法

解决方案 »

  1.   

    我找到了这个
    在打印函数中设置如下,注意你的操作系统下的打印机的默认设置。你可以通过控制面板查看打印机的默认设置来对照着运行你的程序。
    void CtestDialog::OnPrint(CDC *pDC, CPrintInfo *pInfo)
    { LPDEVMODE  pDevMode;
    pDevMode=pInfo->m_pPD->GetDevMode();
    pDevMode->dmOrientation=DMORIENT_PORTRAIT;//纵向
    //DMORIENT_LANDSCAPE横向
    pDevMode->dmPaperSize=DMPAPER_A4;    //将打印纸设置为B5
    pDC->ResetDC(pDevMode);
    }不过不合适我用
    我想改的是ie的打印设置,请问ie有没有给接口呢?
      

  2.   

    听说有device rect
    有没有人用过?
      

  3.   

    刚刚差了资料
    原来不用activex也能实现
    用javascript就能实现 大概就像这样;
    printing.pagesetup()
    白问了,还要靠自己
    散分吧!
      

  4.   

    PRINTDLG pd;
    pd.lStructSize = sizeof(PRINTDLG);
    pd.Flags = PD_RETURNDC;
    pd.hDC = NULL;
    pd.hwndOwner = NULL;
    pd.hInstance = NULL;
    pd.nMaxPage = 1;
    pd.nMinPage = 1;
    pd.nFromPage = 1;
    pd.nToPage  = 1;
    pd.nCopies = 1;
    pd.hDevMode = GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, sizeof (DEVMODE));
    pd.hDevNames = NULL;
    DEVMODE* pDevMode = (DEVMODE* )GlobalLock(pd.hDevMode);
    pDevMode->dmSize = sizeof (DEVMODE);
    pDevMode->dmFields = DM_ORIENTATION;
    pDevMode->dmOrientation = 2;
    GlobalUnlock(pd.hDevMode); //显示打印对话框,由用户来设定纸张大小等。
    if(!PrintDlg(&pd)) 
    {
    GlobalFree(pd.hDevMode);
    return FALSE;
    }
    ASSERT(pd.hDC!=NULL);         DOCINFO di;
    di.cbSize = sizeof(DOCINFO);
    di.lpszDocName = "My Printing"; 
    di.lpszOutput = (LPTSTR) NULL; 
    di.lpszDatatype = (LPTSTR) NULL; 
    di.fwType = 0; 
    StartDoc(pd.hDC, &di);
    StartPage(pd.hDC);
             ......
             //打印一页内容
            EndPage(pd.hDC);
            StartPage(pd.hDC);
            ......
             EndPage(pd.hDC);
    EndDoc(pd.hDC);
    //打印结束
    DeleteDC(pd.hDC);
    GlobalFree(pd.hDevMode);
             
    这段代码我用过,大家可以参考一下