做了个继承自CWnd的类,想增加打印功能,在事件处理中添加如下代码: CDC dc;
CPrintDialog printDlg(FALSE);
if (printDlg.DoModal() == IDCANCEL) 
return; dc.Attach(printDlg.GetPrinterDC());
dc.m_bPrinting = TRUE;

Print(&dc,PRF_CLIENT );程序执行到Print(&dc,PRF_CLIENT );无反应,请问诸位,在cwnd能不能使用print打印,如果能有,什么办法解决,或者有什么其他好的方式在cwnd下打印,急求各位大大的指导

解决方案 »

  1.   

    给你一个打印的例子,用StartDoc()\StartPage函数,MFC与API都可以:
    =================
    This code fragment gets the default printer, opens a print job, and spools one page with Hello, World! on it.// Get the default printer.
    CPrintDialog dlg(FALSE);
    dlg.GetDefaults();// Is a default printer set up?
    HDC hdcPrinter = dlg.GetPrinterDC();
    if (hdcPrinter == NULL)
    {
       MessageBox(_T("Buy a printer!"));
    }
    else
    {
       // Create a CDC and attach it to the default printer.
       CDC dcPrinter;
       dcPrinter.Attach(hdcPrinter);   // Call StartDoc() to begin printing.
       DOCINFO docinfo;
       memset(&docinfo, 0, sizeof(docinfo));
       docinfo.cbSize = sizeof(docinfo);
       docinfo.lpszDocName = _T("CDC::StartDoc() Code Fragment");   // If it fails, complain and exit gracefully.
       if (dcPrinter.StartDoc(&docinfo) < 0)
       {
          MessageBox(_T("Printer would not initalize"));
       }
       else
       {
          // Start a page.
          if (dcPrinter.StartPage() < 0)
          {
             MessageBox(_T("Could not start page"));
             dcPrinter.AbortDoc();
          }
          else
          {
             // Do some printing.
             CGdiObject* pOldFont = dcPrinter.SelectStockObject(SYSTEM_FONT);         dcPrinter.TextOut(50, 50, _T("Hello World!"), 12);         dcPrinter.EndPage();
             dcPrinter.EndDoc();
             dcPrinter.SelectObject(pOldFont);
          }
       }
    }