이것 때문에 꽤나 골머리를 앓았었는데 여기서 수없이 찾아보고 테스트하여 답을 얻었습니다. 저처럼 필요하신 분이 계실 것 같아 정리하여 올려봅니다. 제가 원하던 것은 LPT Port로 직접 Data를 쓰는 것이었습니다. 프린터에 일정한 형식으로 Text를 만들어 넣어 주면 내장된 폰트 등을 사용하여 바코드도 인쇄하는 프린터를 쓰기 위한 것입니다. // LPT Port 로 직접 인쇄하기... void CLabelPrint::OutLptPort(CString strText) { HANDLE hLpt; hLpt = CreateFile("LPT1:", GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if(hLpt == INVALID_HANDLE_VALUE) AfxMessageBox("Can not open LPT1 !!!"); else{ DWORD dwWritten; WriteFile(hLpt, strText, strText.GetLength(), &dwWritten, NULL); CloseHandle(hLpt); } } // LPT Driver로 인쇄하기... void CLabelPrint::OutLptDrive(CString strText) { HDC PrintDc; // Printer DC를 얻고 PrintDc = CreateDC(NULL, DefaultPrinter, NULL, NULL); // 현재 인쇄할 내용이 무엇이라는 것만 알리고... static DOCINFO docinfo = { sizeof(DOCINFO), "Label Print", NULL}; // 인쇄 시작 명령을 보낸다 StartDoc(PrintDc, &docinfo); // 페이지 시작임을 알린다 StartPage(PrintDc); // 실제 인쇄를 하는 부분... TextOut(PrintDc, 0, 0, strText, strText.GetLength()); // 페이지 종료를 알린다 EndPage(PrintDc); // 인쇄가 종료 명령을 보낸다 EndDoc(PrintDc); }
Tags: print 프린트
|