我有一个mCurve控件,是用来画曲线的
我要把这个界面打印出来,可抓下来后打印出来的却是个黑块我现在怀疑是抓图生成有问题我的程序如下,看看哪儿出错了呢void CprintDlg::OnPrintCurve()
{
// TODO: 在此添加控件通知处理程序代码
    
     
CPrintDialog dlg(false);

     dlg.DoModal();  //judge the selected priter whether success to set up
 HDC hdcPrinter = dlg.GetPrinterDC();     if (hdcPrinter == NULL)
        {
          MessageBox(_T("请选择打印机!"));
         }
     else
        {
          // create a CDC and attach it to the selected printer
            CDC dcPrinter;
            dcPrinter.Attach(hdcPrinter); CDC bmpCDC;
bmpCDC.CreateCompatibleDC(mCurve.GetDC());

 
            
dcPrinter.SetMapMode(MM_ANISOTROPIC);
dcPrinter.SetBkColor(RGB(255,255,255));
dcPrinter.SetBkMode(TRANSPARENT);
    
dcPrinter.SetWindowExt(bmpCDC.GetDeviceCaps(LOGPIXELSX),bmpCDC.GetDeviceCaps(LOGPIXELSY));
            dcPrinter.SetViewportExt(dcPrinter.GetDeviceCaps(LOGPIXELSX),dcPrinter.GetDeviceCaps(LOGPIXELSY));
            
CRect CurRect;
        mCurve.GetWindowRect(CurRect); 

            //Converts device units into logical units
            bmpCDC.DPtoLP(CurRect);
        CBitmap bmp;
        bmp.CreateCompatibleBitmap(mCurve.GetDC(),CurRect.Width() ,CurRect.Height()); 

bmpCDC.SelectObject(&bmp);


DOCINFO docinfo;
            memset(&docinfo, 0, sizeof(docinfo));
            docinfo.cbSize = sizeof(docinfo);
            docinfo.lpszDocName = "曲线打印";            docinfo.lpszOutput = (LPTSTR) NULL; 
        docinfo.lpszDatatype = (LPTSTR) NULL; 
        docinfo.fwType = 0; if (dcPrinter.StartDoc(&docinfo)<0)
               {
                 MessageBox(_T("打印机初始化失败!"));
 dcPrinter.EndDoc();
               }
            else
 {
  if(dcPrinter.StartPage()<0)
  {
  MessageBox("开始页错误!");
                      dcPrinter.EndDoc(); 
  }
  else
   {
                      
                     dcPrinter.BitBlt(0,0, CurRect.Width(),CurRect.Height(),&bmpCDC,0,0, SRCCOPY); 
                     dcPrinter.EndPage();     
   }
   }
            
dcPrinter.EndDoc(); 
DeleteDC(bmpCDC);
DeleteDC(dcPrinter);
            DeleteObject(bmp); }
             
   
}