www.mxdraw.com
内容索引主面
前一个向上下一个
MxDrawXCustomFunction::Mx_NestedPrint 方法

实现把多个控件的内容打印到一张图纸,实现嵌套打印

IDL
static bool Mx_NestedPrint(LPCTSTR pszPrintName, LPCTSTR pszPaperName, int iPrintDirection, LPCTSTR pszPrintConfig, LPCTSTR pszDocName, long lHOcx, double ptLBx, double ptLBy, double ptRTx, double ptRTy, LONG iLeftMargin, LONG iRightMargin, LONG iTopMargin, LONG iBottomMargin, LPCTSTR pszLayoutName, LONG iFlag);
参数 
说明 
LPCTSTR pszPrintName 
打印机名,如果传为空,取系统默认打印机 
LPCTSTR pszPaperName 
打印的图纸名,如果传为空,取系统默认打印机设置 
int iPrintDirection 
打印的方向,2 为横向,1为纵向 
LPCTSTR pszPrintConfig 
打印配制,暂没有使用 
LPCTSTR pszDocName 
打印的文档名称,在用pdf虚拟打印机时,指定打印的pdf文件的缺省文件名 
long lHOcx 
控件对象id,调用Mx_GetMxDrawXId函数得到. 
double ptLBx 
打印的范围左下角x 
double ptLBy 
打印的范围左下角y 
double ptRTx 
打印的范围右上角x 
double ptRTy 
打印的范围右上角y 
LONG iLeftMargin 
打印的页边的左边距离,如果为-1,取打印机默认的页边距 
LONG iRightMargin 
打印的页边的右边距离,如果为-1,取打印机默认的页边距 
LONG iTopMargin 
打印的页边的上边距离,如果为-1,取打印机默认的页边距 
LONG iBottomMargin 
打印的页边的下边距离,如果为-1,取打印机默认的页边距 
LPCTSTR pszLayoutName 
打印的布局,为NULL就是模型Model中的内容 
LONG iFlag 
pRectPageMargin参数的含义,iFlag = 0表示页边距,iFlag = 1表示打印区域矩形框位置 
lHOcx2 
控件对象id,调用Mx_GetMxDrawXId函数得到. 
ptLBx2 
打印的范围左下角x 
ptLBy2 
打印的范围左下角y 
ptRTx2 
打印的范围右上角x 
ptRTy2 
打印的范围右上角y 
iLeftMargin2 
打印的页边的左边距离,如果为-1,取打印机默认的页边距 
iRightMargin2 
打印的页边的右边距离,如果为-1,取打印机默认的页边距 
iTopMargin2 
打印的页边的上边距离,如果为-1,取打印机默认的页边距 
iBottomMargin2 
打印的页边的下边距离,如果为-1,取打印机默认的页边距 
pszLayoutName2 
打印的布局,为NULL就是模型Model中的内容 
iFlag2 
pRectPageMargin参数的含义,iFlag = 0表示页边距,iFlag = 1表示打印区域矩形框位置 ..... - 下一个打印参数. 

成功返回.

例如: JS代码

        function  NestedPrint()
        {
            var axMxDrawX = document.getElementById("MxDrawXCtrl");
            // 设置打印机数据.
            var printParam =  axMxDrawX.Call("Mx_NewResbuf","");
            //      pszPrintName    -   打印机名,如果传为空,取系统默认打印机
            printParam.AddString("");

            //      pszPaperName    -   打印的图纸名,如果传为空,取系统默认打印机设置
            printParam.AddString("");

            //      iPrintDirection -   打印的方向,2 为横向,1为纵向
            printParam.AddLong(1);

            //      pszPrintConfig  -   打印配制,暂没有使用
            printParam.AddString("");

            //      pszDocName      -   打印的文档名称,在用pdf虚拟打印机时,指定打印的pdf文件的缺省文件
            printParam.AddString("");


            // 设置控件1的打印数据

                var viewBound  = axMxDrawX.Call("Mx_GetViewCoord","");


                var jpgWidth = viewBound.AtDouble(3) - viewBound.AtDouble(1);
                var jpgHeight = viewBound.AtDouble(4) - viewBound.AtDouble(2);


                var printWidth = 100;
                var printHeight = 100;
                if(jpgWidth > 1)
                    printHeight = printWidth * jpgHeight / jpgWidth;

                // 得到控件id;
                var ocxIdRet = axMxDrawX.Call("Mx_GetMxDrawXId","");


                printParam.AddLong(ocxIdRet.AtLong(1));

                //      ptLBx           -   打印的范围左下角x
                printParam.AddDouble(viewBound.AtDouble(1));

                //      ptLBy           -   打印的范围左下角y
                printParam.AddDouble(viewBound.AtDouble(2));

                //      ptRTx           -   打印的范围右上角x
                printParam.AddDouble(viewBound.AtDouble(3));

                //      ptRTy           -   打印的范围右上角y
                printParam.AddDouble(viewBound.AtDouble(4));


                // 打印区域的左上角X坐标,图纸单为mm
                printParam.AddLong(50);

                // 打印区域的右下角X坐标,图纸单为mm
                printParam.AddLong(50 + printWidth );

                // 打印区域的左上角Y坐标,图纸单为mm
                printParam.AddLong(50);


                // 打印区域的右下角Y坐标,图纸单为mm
                printParam.AddLong(50 + printHeight);

                //      pszLayoutName   -   打印的布局,为NULL就是模型Model中的内容
                printParam.AddString("");

                // 前面打印参数说明:iFlag = 0表示页边距,iFlag = 1表示打印区域矩形框位置
                printParam.AddLong(1);


            //
            // 设置控件2的打印数据

                var axMxDrawX2 = document.getElementById("MxDrawXCtrl2");

                var viewBound  = axMxDrawX2.Call("Mx_GetViewCoord","");



                var jpgWidth = viewBound.AtDouble(3) - viewBound.AtDouble(1);
                var jpgHeight = viewBound.AtDouble(4) - viewBound.AtDouble(2);


                var printWidth = 100;
                var printHeight = 100;
                if(jpgWidth > 1)
                    printHeight = printWidth * jpgHeight / jpgWidth;

                // 得到控件id;
                var ocxIdRet = axMxDrawX2.Call("Mx_GetMxDrawXId","");

                printParam.AddLong(ocxIdRet.AtLong(1));

                //      ptLBx           -   打印的范围左下角x
                printParam.AddDouble(viewBound.AtDouble(1));

                //      ptLBy           -   打印的范围左下角y
                printParam.AddDouble(viewBound.AtDouble(2));

                //      ptRTx           -   打印的范围右上角x
                printParam.AddDouble(viewBound.AtDouble(3));

                //      ptRTy           -   打印的范围右上角y
                printParam.AddDouble(viewBound.AtDouble(4));


                // 打印区域的左上角X坐标,图纸单为mm
                printParam.AddLong(50);

                // 打印区域的右下角X坐标,图纸单为mm
                printParam.AddLong(50 + printWidth );

                // 打印区域的左上角Y坐标,图纸单为mm
                printParam.AddLong(160);


                // 打印区域的右下角Y坐标,图纸单为mm
                printParam.AddLong(160 + printHeight);

                //      pszLayoutName   -   打印的布局,为NULL就是模型Model中的内容
                printParam.AddString("");

                // 前面打印参数说明:iFlag = 0表示页边距,iFlag = 1表示打印区域矩形框位置
                printParam.AddLong(1);


            // 开始打印
            var ret = axMxDrawX.CallEx("Mx_NestedPrint",printParam);
            if(ret.AtString(0) == "Ok")
                alert("打印成功");
            else
                alert("打印失败");
        }
Copyright (c) 2010. All rights reserved.
你认为该帮助怎么样? 发送反馈信息!