C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[39368] Re:dos 환경에서의 프린터 제어
임문환 [] 1507 읽음    2005-03-04 16:19
황준호 님이 쓰신 글 :
: 수고하십니다.
: 제가 만들고 있는것은 텍스트모드(ASCII값)로 만들어져있는 설계도면을 A4크기에 맞게 출력하는것입니다.
: 그런데 설계도면 파일의 화면크기가 A4를 넘습니다.
: 그래서 HP에 연락해봐서 프린터 제어코드(PCL 제어코드)를 받았습니다.
: 그러나 제어코드만으로는 축소가 조금밖에 안되는것 같습니다.
: 프로그램적으로 window상에서의 프린터 속성의 축소값을
: 지정할수있는방법은 없는지요...여러 고수분들의 조언부탁드립니다.
:
: dos 환경에서 개발할려고 하니까 많은 어려움이 있습니다. ^^;

Windows 환경에서 Win API를 이용한 인쇄는 아래와 같습니다.
1. EnumPrinters로 프린터 목록을 얻는다.
2. DocumentProperties로 프린터의 기능을 알아내거나 설정한다.
3. 원하는 프린터로 인쇄한다.
HDC CreateDC(
    LPCTSTR lpszDriver,    // pointer to string specifying driver name
    LPCTSTR lpszDevice,    // pointer to string specifying device name 
    LPCTSTR lpszOutput,    // do not use; set to NULL
    CONST DEVMODE *lpInitData     // pointer to optional printer data
   );   
lpszDriver에는 "WINSPOOL"을 지정합니다.
int StartDoc(
    HDC hdc,    // handle of device context
    CONST DOCINFO *lpdi     // address of structure with file names 
   );
hdc에 쓰기 작업(즉,인쇄)   
int EndDoc(
    HDC hdc     // handle to device context
   );   
DEVMODE의 구성원 중에는 dmScale이 있는데 확대/축소용입니다.
물론 해당 프린터가 이를 지원해야 가능합니다.

한가지 주의할 것은, 화면에 보이는 크기와 인쇄물이 크기는 서로 같지 않다는 것입니다.
이는 모니터의 DPI와 프린터의 DPI가 대부분 다르기 때문입니다.
DPI 가 클수록 결과물이 작습니다. 모니터에 크게 보이는 그림도 인쇄하면 작게 표시되는 것은 대부분 이 때문입니다.
이 둘간의 차이를 보정하려면 DEVMODE의 dmScale를 조정하든지 소스 자체를 확대/축소해서 프린터에 내보내면 됩니다. 그럼 이 둘의 DPI는 어떻게 아느냐 하면 GetDeviceCaps 함수를 통하여 가능합니다.
LOGPIXELSX, LOGPIXELSY에 적용되는 logical inch는 3cm입니다.

DeviceCapabilities로 얻을 수 있는 프린터의 대표적 정보에는 아래의 것들이 있습니다.
DC_COPIES
DC_PAPERS
DC_PAPERSIZE
DC_PAPERNAMES
DC_ENUMRESOLUTIONS
자세한 내용은 Win API 도움말을 참고하시기 바랍니다.

+ -

관련 글 리스트
39367 dos 환경에서의 프린터 제어 황준호 841 2005/03/04
39368     Re:dos 환경에서의 프린터 제어 임문환 1507 2005/03/04
39370         Re:Re:dos 환경에서의 프린터 제어 황준호 945 2005/03/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.