Windows
인쇄 관련 함수
Dave Heo
2007. 11. 20. 09:19
Windows API에서는 프린터가 화면처럼 DC를 이용한 GDI 형식의 프린팅이 됩니다.
먼저 EnumPrinters, PrintDlg, CreateDC 등을 이용해 프린터 DC를 얻구요...
BOOL EnumPrinters(DWORD Flags, LPTSTR Name, DWORD Level, LPBYTE PrinterEnum, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
BOOL PrintDlg(LPPRINTDLG);
HDC CreateDC(LPCTSTR,LPCTSTR,LPCTSTR,CONST DEVMODE*);
StartDoc 함수로 프린트를 시작합니다(실제로 프린트가 바로바로 되는 것이 아니라 스풀링이 되는 거죠).
int StartDoc(HDC,CONST DOCINFO*);
EndDoc 함수로 프린트를 끝냅니다.
int EndDoc(HDC);
이 StartDoc과 EndDoc 사이에 StartPage 함수와 EndPage 함수를 써서 각 페이지를 구분합니다.
int StartPage(HDC);
int EndPage(HDC);
예 :
HDC hPrintDC;
DOCINFO DocInfo;
......
......
//프린터 DC를 얻는다.
......
......
StartDoc(hPrintDC,&DocInfo);
StartPage(hPrintDC); //첫번째 페이지
MoveToEx(hPrintDC,30,30,NULL); //원점 30,30으로 이동
LineTo(hPrintDC,400,1000); //원점에서 400,1000으로 선을 긋는다.
EndPage(hPrintDC); //첫번째 페이지 끝
StartPage(hPrintDC); //두번째 페이지
MoveToEx(hPrintDC,70,65,NULL); //원점 70,65으로 이동
LineTo(hPrintDC,500,500); //원점에서 500,500으로 선을 긋는다.
EndPage(hPrintDC); //두번째 페이지 끝
EndDoc(hPrintDC);
먼저 EnumPrinters, PrintDlg, CreateDC 등을 이용해 프린터 DC를 얻구요...
BOOL EnumPrinters(DWORD Flags, LPTSTR Name, DWORD Level, LPBYTE PrinterEnum, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
BOOL PrintDlg(LPPRINTDLG);
HDC CreateDC(LPCTSTR,LPCTSTR,LPCTSTR,CONST DEVMODE*);
StartDoc 함수로 프린트를 시작합니다(실제로 프린트가 바로바로 되는 것이 아니라 스풀링이 되는 거죠).
int StartDoc(HDC,CONST DOCINFO*);
EndDoc 함수로 프린트를 끝냅니다.
int EndDoc(HDC);
이 StartDoc과 EndDoc 사이에 StartPage 함수와 EndPage 함수를 써서 각 페이지를 구분합니다.
int StartPage(HDC);
int EndPage(HDC);
예 :
HDC hPrintDC;
DOCINFO DocInfo;
......
......
//프린터 DC를 얻는다.
......
......
StartDoc(hPrintDC,&DocInfo);
StartPage(hPrintDC); //첫번째 페이지
MoveToEx(hPrintDC,30,30,NULL); //원점 30,30으로 이동
LineTo(hPrintDC,400,1000); //원점에서 400,1000으로 선을 긋는다.
EndPage(hPrintDC); //첫번째 페이지 끝
StartPage(hPrintDC); //두번째 페이지
MoveToEx(hPrintDC,70,65,NULL); //원점 70,65으로 이동
LineTo(hPrintDC,500,500); //원점에서 500,500으로 선을 긋는다.
EndPage(hPrintDC); //두번째 페이지 끝
EndDoc(hPrintDC);