最近用的一些知识点

来源:互联网 发布:centos 7 pxelinux.0 编辑:程序博客网 时间:2024/05/17 01:46
CString a,b;//改变字符串的大小写
    a.MakeLower();
    b.MakeUpper();
char szprinter[80];
//操作打印机
    char *szDevice,*szDriver,*szOutput;
    di.cbSize = sizeof(DOCINFO);
    int i=di.cbSize;
    di.lpszDocName = "printer";
    di.lpszOutput = (LPTSTR) NULL;
    di.lpszDatatype = (LPTSTR) NULL;
    di.fwType = 0;
   
    PRINTDLG pd;
    ZeroMemory(&pd, sizeof(PRINTDLG));
    AfxGetApp()->GetPrinterDeviceDefaults(&pd);

    // 得到设备字符串存入数组szprinter中
    GetProfileString("windows","device",",,,",szprinter,80);
    // 将设备字符串分解
    if(NULL!=(szDevice=strtok(szprinter,","))&&
        NULL!=(szDriver=strtok(NULL,","))&&
        NULL!=(szOutput=strtok(NULL,",")))
    // 创建一个打印机设备句柄
    hdcprint=CreateDC(szDriver,szDevice,szOutput,NULL);

    DEVMODE* lpDevMode=(LPDEVMODE)::GlobalLock(pd.hDevMode);
    //Do something with the data...
    //重新定义纸张大小
     lpDevMode->dmPaperSize = DMPAPER_USER; //设定为自定义纸张尺寸
     lpDevMode->dmFields |= DM_PAPERSIZE; //允许重新设置纸张大小
     lpDevMode->dmFields |= DM_PAPERLENGTH; //允许重新设置纸张大小
     lpDevMode->dmFields |= DM_PAPERWIDTH; //允许重新设置纸张大小

     lpDevMode->dmPaperWidth = 1800; //设定纸长为 3 厘米
     lpDevMode->dmPaperLength = 1780; //设定纸长为 3 厘米
    rcText.left   =   0;
    rcText.top    =   0;
    rcText.right   = 1200;
    rcText.bottom  = 2000;

    GlobalUnlock(pd.hDevMode);
    ResetDC(hdcprint,lpDevMode); //使设置的参数发挥作用

    if(hdcprint!=0)
    {
        if(StartDoc(hdcprint,&di)>0) //开始执行一个打印作业
        {
            StartPage(hdcprint); //打印机走纸,开始打印
            SaveDC(hdcprint); //保存打印机设备句柄
            // 输出一行文字
             DrawText(hdcprint,a,a.GetLength(),rcText,  DT_LEFT | DT_WORDBREAK);
            RestoreDC(hdcprint,-1); //恢复打印机设备句柄
            EndPage(hdcprint); //打印机停纸,停止打印
            EndDoc(hdcprint); //结束一个打印作业
            //MessageBox("打印完毕!","提示",MB_ICONINFORMATION);
        }
    }
    else
    {
        MessageBox("没有默认打印机,或者没有安装打印机!");
        return;
    }
原创粉丝点击