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的代码,但是,字符串可以显示出来,图像没有打印出来。
哪位高人帮我看看,哪里有有问题。
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的代码,但是,字符串可以显示出来,图像没有打印出来。
哪位高人帮我看看,哪里有有问题。
dc.StretchBlt (
75,
5,
200,
-200,
&dcMem,
0,
0,
BM.bmWidth,
BM.bmHeight,
SRCCOPY
);
如果我的输出设备是View的话,图是可以正常输出到现实器上的。
但是换成打印机就不好用了