我在做一个管路系统,基于对话框的,别的都做好了,就是打印这一块没做.
我想做一种类似收据的打印,包括数据头,内容,时间等.
我的想法就是获取打印机句柄以后,在打印机的虚拟"画布"上,用Textout()函数来画出来.
但是我最大的困难就是,如何获取打印机的句柄,是CDC,还是PDC,还是HDC?
还有,如何实现打印预览的功能,以及如何实现打印CCtrlList的打印.
我很菜鸟,请教各位高手;
感激不尽啊....
分不多了,请见谅啊.
最好能有详细的讲解啊,网上有个南航的人写的,我看过了,用不了,所以大家别推荐了啊.
跪求高手赐教..........

解决方案 »

  1.   

                    CDC dc;
    CPrintDialog pdlg(FALSE,PD_NOPAGENUMS|PD_NOSELECTION,this);
    BOOL bFindPrinter=pdlg.GetDefaults();
    if(!bFindPrinter)
    return;
    dc.Attach(pdlg.GetPrinterDC());
      

  2.   

    打印内容 CFont font;
    VERIFY(font.CreatePointFont(130, "宋体", &dc));//为DC创建字体
    CFont* def_font = dc.SelectObject(&font);//保存现在的字体

    TEXTMETRIC TextM;
    dc.GetTextMetrics(&TextM);
    //字体高度
    int nCharHeight = (unsigned short)TextM.tmHeight;

    //设置所需打印纸张数目
    DOCINFO di;
    di.cbSize = sizeof(DOCINFO);
    di.lpszDocName = "Printing"; 
    di.lpszOutput = (LPTSTR) NULL; 
    di.lpszDatatype = (LPTSTR) NULL; 
    di.fwType = 0; 
    dc.StartDoc(&di);
    dc.StartPage();

    int line = 1;
    CString sftitle = "商品统计报表";
    dc.TextOut(2,line*nCharHeight,sftitle,strlen(sftitle));
    //字体
    CFont font1;
    VERIFY(font1.CreatePointFont(115, "宋体", &dc));//为DC创建字体
    dc.SelectObject(&font1);//保存现在的字体

    CString strtotal;
    line++;
    strtotal.Format("日期:%s",begin);
    dc.TextOut(2,line*nCharHeight,strtotal, strlen(strtotal));