none
wince 打印相关 RRS feed

  • 问题

  • 以下是我在wince中的打印程序,因为暂时没有打印机测试,所以不知道逻辑上有什么问题,请大家帮看看~~~


    void print()
    {
    CDC  dcPrinter; 
    DOCINFO  di; 
    HDC A;
    char b[]="xxx";//打印机驱动名
      A=CreateDC((LPCWSTR)b,NULL,NULL,NULL); 
      dcPrinter.Attach(A);

      memset(&di,0,sizeof(DOCINFO)); 
      di.cbSize  =  sizeof(DOCINFO); 
      di.lpszDocName  =  _T("Sample  Document"); 
       
      if(dcPrinter.StartDoc(&di)  !=  0) 
      { 
      StartPage(dcPrinter); 
       
      dcPrinter.StretchBlt(0,0,0,0,&dcMem,0,0,0,0,SRCCOPY); 
     
      EndPage(dcPrinter); 
      EndDoc(dcPrinter); 
    }
      DeleteDC(dcPrinter); // TODO: 在此添加控件通知处理程序代码
    }
    2009年12月17日 3:11

答案

  • 先问答第一个疑问:
    TCLing ,谢谢你的提醒,我之前项目的系统项目是特别定做的,再查阅4。2的文档我才发现,请查看CE帮助如下:
    ================================
    。。。。。。。。。。。。。。。。。。

    Remarks

    The following CPrintDialog class methods are unique to Windows CE:

    CPrintDialog::GetMargins
    CPrintDialog::GetPaperSize
    CPrintDialog::PrintDraft
    MFC for Windows CE does not support the following methods of the CPrintDialog class:

    CPrintDialog::CreatePrinterDC
    CPrintDialog::PrintCollate
    CPrintDialog::GetDevMode
    CPrintDialog::GetDriverName
    CPrintDialog::PrintRange
    CPrintDialog::GetFromPage
    CPrintDialog::GetToPage
    Requirements

      Windows CE versions: 2.10 and later 
      Header file: Declared in Afxdlgs.h
    ==================================================

    关于你的第2个问题,其实在上贴中已经有答案了,在下面网地址中有个关于对话框打印的示例,你看看就知道了。
    http://www.vckbase.com/code/listcode.asp?mclsid=5&sclsid=511



    广交CE高手,共断疑难杂症 :)
    • 已标记为答案 TCLing 2009年12月24日 3:09
    2009年12月23日 15:07

全部回复

  • hi,TCLing,你好,有建议如下:

    1.  如果你是因为没有打印机, 可以考虑装个虚拟打印机,网上很多

    2.  如果你想你的知道逻辑,对不对装完虚拟打印机调式一下就可以了.

    3.  如果你是想知道正确的方法,我附带我以前代码参考如下,

     


    广交CE高手,共断疑难杂症 :)
    感谢您的宝贵建议。对于您的第三点中的参考代码没看到?请再发一遍好吗?谢谢了
    2009年12月22日 1:26
  • hi,TCLing,你好,有建议如下:

    1.  如果你是因为没有打印机, 可以考虑装个虚拟打印机,网上很多

    2.  如果你想你的知道逻辑,对不对装完虚拟打印机调式一下就可以了.

    3.  如果你是想知道正确的方法,我附带我以前代码参考如下,

    =================
    Sorry , 没注意到CODE没复制成功,添加代码参考如下,图形的打印绘制在VIEW中完成。。。。
    注释,另外你可以直接在http://www.vckbase.com/code/listcode.asp?mclsid=5&sclsid=511上去找个事例看看。。
    BOOL CFrmMain::OnPrinterSetup(LONG wParam,LONG lParam)

     CPrintDialog dlg(FALSE);
     if (dlg.DoModal () ==IDOK)
     {
      //保存设置你自己确定
     }

     return TRUE;
    }

    LONG CFrmMain::OnPrintWnd(UINT wParam,LONG )
    {
     ..............
     CDocWnd* pDoc = CFrmMain::slfFindDocument(wParam);
     if (pDoc == NULL)
     {
      //DOC为NULL就不要打印了
      return 0;
     }
     else
     {
      //否则找到VIEW从DOC中
      pslfView->PostMessage(WM_COMMAND,ID_FILE_PRINT_DIRECT,0);
     }
     return 0;
    }


    广交CE高手,共断疑难杂症 :)
    2009年12月22日 12:49
  • 谢谢回复。
    刘哥,wince 不支持CPrintDialog这个类的吧,还有我弄的是对话框打印,不是单文档。
    2009年12月23日 7:38
  • 先问答第一个疑问:
    TCLing ,谢谢你的提醒,我之前项目的系统项目是特别定做的,再查阅4。2的文档我才发现,请查看CE帮助如下:
    ================================
    。。。。。。。。。。。。。。。。。。

    Remarks

    The following CPrintDialog class methods are unique to Windows CE:

    CPrintDialog::GetMargins
    CPrintDialog::GetPaperSize
    CPrintDialog::PrintDraft
    MFC for Windows CE does not support the following methods of the CPrintDialog class:

    CPrintDialog::CreatePrinterDC
    CPrintDialog::PrintCollate
    CPrintDialog::GetDevMode
    CPrintDialog::GetDriverName
    CPrintDialog::PrintRange
    CPrintDialog::GetFromPage
    CPrintDialog::GetToPage
    Requirements

      Windows CE versions: 2.10 and later 
      Header file: Declared in Afxdlgs.h
    ==================================================

    关于你的第2个问题,其实在上贴中已经有答案了,在下面网地址中有个关于对话框打印的示例,你看看就知道了。
    http://www.vckbase.com/code/listcode.asp?mclsid=5&sclsid=511



    广交CE高手,共断疑难杂症 :)
    • 已标记为答案 TCLing 2009年12月24日 3:09
    2009年12月23日 15:07
  • 非常感谢刘哥的答复。
    结贴了!

    2009年12月24日 3:10