HDC hDC;
CString m_strPaper_direction ;
m_strPaper_direction = "1";CString m_strPaper_type;
m_strPaper_type = "1";
HCURSOR hCursor = SetCursor(LoadCursor(NULL, IDC_WAIT));
int m_nCount = 1;
CString m_strAdvid;
m_strAdvid = "beijing10001";
CString m_strHeader ;
m_strHeader = "LeadTools Gera Test";
for (int i = 0; i < m_nCount; i++)

CPrintDialog PrintDialog(FALSE);
PrintDialog.GetDefaults();
DEVMODE *myMode = PrintDialog.GetDevMode(); if (m_strPaper_direction == "1")
{
myMode->dmOrientation = DMORIENT_LANDSCAPE; 
}
else if (m_strPaper_direction == "2")
{
myMode->dmOrientation = DMORIENT_PORTRAIT;  
}if (m_strPaper_type == "1")
{
myMode->dmPaperSize = DMPAPER_A4;
}
else if (m_strPaper_type == "2")
{
myMode->dmPaperSize = DMPAPER_A3;
}CDC dc;
dc.Attach(PrintDialog.GetPrinterDC());
dc.ResetDC(myMode); //resets dc to new DEVMODE DOCINFO di;
memset( &di, 0, sizeof(DOCINFO) );
di.cbSize = sizeof(DOCINFO); 
di.lpszDocName = m_strAdvid;
di.lpszOutput = (LPTSTR) NULL; 
di.fwType = 0; 
dc.StartDoc(&di); 
dc.StartPage();hDC = dc.m_hDC;
if ( hDC == NULL )
{
return;
}if ( m_strHeader != "" ) //打印图信息
{
dc.TextOut(100, 100, m_strHeader, m_strHeader.GetLength());
}
CBitmap bitmap;
bitmap.Detach();                             
Picture.Load("E:\\test.jpg");
  
HBITMAP hbmp = (HBITMAP)Picture.GetSafeHandle();
bitmap.Attach(hbmp);    CDC dcMem;
dcMem.CreateCompatibleDC(&dc);              //?寶梌pDC寭梕揑??忋壓暥
dcMem.SelectObject(&bitmap);                //彨埵??徾?擖??忋壓暥
BITMAP BM;
bitmap.GetBitmap( &BM );dc.StretchBlt (
   75,
   5,
   200,
   200,
   &dcMem,
   0,
   0,
   BM.bmWidth,
   BM.bmHeight,
   SRCCOPY 
);
bitmap.DeleteObject(); float pageWidth = dc.GetDeviceCaps(HORZRES) - 150;
 float pageHeight = dc.GetDeviceCaps(VERTRES) - 350; dc.EndPage(); 
dc.EndDoc();  
dc.DeleteDC();
}
SetCursor(hCursor);// 上面是我写的打印jpg的代码,但是,字符串可以显示出来,图像没有打印出来。
哪位高人帮我看看,哪里有有问题。

解决方案 »

  1.   

    判断一下各个对象是否有效,另外这样试一下:
    dc.StretchBlt (
       75,
       5,
       200,
       -200,
       &dcMem,
       0,
       0,
       BM.bmWidth,
       BM.bmHeight,
       SRCCOPY 
    );
      

  2.   

    Picture是从网上找的能将jpg转成位图的一个类CBitmapPicture
    如果我的输出设备是View的话,图是可以正常输出到现实器上的。
    但是换成打印机就不好用了