아래의 코드를 그냥 인쇄하고 싶은 버튼에 넣으면 된다...
// 인쇄 코드.
int nWidth, nHeight;
CClientDC dc(this); //this->pImgWnd
CDC MemDC;
MemDC.CreateCompatibleDC(&dc);
CRect rect;
GetClientRect(rect);
nWidth = rect.Width();
nHeight = rect.Height();
CBitmap BMP;
BMP.CreateCompatibleBitmap(&dc, rect.Width(), rect.Height());
CBitmap* pOldBitmap = MemDC.SelectObject(&BMP);
MemDC.BitBlt(0, 0, nWidth, nHeight, &dc, 0, 0, SRCCOPY);
/*
SECJpeg* jpg = new SECJpeg();
jpg->CreateFromBitmap(&MemDC,&BMP);
jpg->SaveImage("Test.jpg");
*/
HANDLE hDib;
LPSTR pDib;
LPBITMAPINFO lpBitInfo;
HANDLE hlpBitInfo;
//CBitmap BMP;
//BMP.LoadBitmap(IDB_BITMAP1);
hDib = GlobalAlloc(GHND, nWidth*nHeight * 3);
pDib = (LPSTR)GlobalLock(hDib);
hlpBitInfo = GlobalAlloc(GHND, sizeof(BITMAPINFOHEADER) + sizeof(BITMAPINFO));
lpBitInfo = (LPBITMAPINFO)GlobalLock(hlpBitInfo);
//BITMAPINFO
lpBitInfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
lpBitInfo->bmiHeader.biWidth = nWidth;
lpBitInfo->bmiHeader.biHeight = nHeight;
lpBitInfo->bmiHeader.biPlanes = 1;
lpBitInfo->bmiHeader.biBitCount = 24;
lpBitInfo->bmiHeader.biCompression = BI_RGB;
lpBitInfo->bmiHeader.biSizeImage = nWidth * nHeight * 3;
lpBitInfo->bmiHeader.biXPelsPerMeter = 0;
lpBitInfo->bmiHeader.biYPelsPerMeter = 0;
lpBitInfo->bmiHeader.biClrUsed = 0;
lpBitInfo->bmiHeader.biClrImportant = 0;
////BITMAPINFO
HDC hdc = ::GetDC(this->m_hWnd);
GetDIBits(hdc, (HBITMAP)BMP, 0, nHeight, pDib, lpBitInfo, DIB_RGB_COLORS);
::ReleaseDC(this->m_hWnd, hdc);
static DOCINFO docinfo = { sizeof(DOCINFO), _T("IMAGE"), NULL };
CPrintDialog dlg(FALSE);
if (dlg.DoModal() == IDCANCEL)
return;
HDC hpdc = dlg.GetPrinterDC();
int cx, cy;
cy = GetDeviceCaps(hpdc, VERTRES);
cx = GetDeviceCaps(hpdc, HORZRES);
if (StartDoc(hpdc, &docinfo))
{
if (StartPage(hpdc))
{
StretchDIBits(hpdc,
0, 0, cx, cy, 0, 0, nWidth, nHeight, pDib, lpBitInfo, DIB_RGB_COLORS, SRCCOPY);
EndPage(hpdc);
}
EndDoc(hpdc);
}
::RestoreDC(hpdc, -1);
'GUI Toolkit > MFC' 카테고리의 다른 글
MFC - 탭 컨트롤(Tab Control) 커스터마이징 (0) | 2017.09.13 |
---|---|
MFC - 다이얼로그(Dialog) 에 이미지 넣기 (0) | 2017.09.12 |
MFC - 다이얼로그(Dialog) Item들의 글자 크기 변경 (0) | 2017.09.11 |
MFC - 리스트 컨트롤(List Control) 에 정렬 기능 추가하기 (0) | 2017.09.07 |
MFC - 리스트 컨트롤(List Control)에서 여러 개의 아이템을 동시에 삭제하기 (0) | 2017.09.07 |