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
[25156] Re:Re:Re:[질문]프린터 양식 설정방법 궁금합니다.
임문환 [mhlim] 1620 읽음    2003-04-10 18:32
저도 프린터에 대해서 잘 알지는 못하지만...
여튼 아래와 같이 제어할 수 있습니다.

typedef struct
{
DEVMODE Mode;
char Extra[1024];
}DevModeExtra;

void SetPrinterProperties(void)
{
TPrinter *pPrn = Printer();

DevModeExtra inPrnProp,outPrnProp;
HANDLE pHandle;

memset(&inPrnProp,sizeof(DevModeExtra),0);
memset(&outPrnProp,sizeof(DevModeExtra),0);

inPrnProp.Mode.dmSize = sizeof(DEVMODE);
outPrnProp.Mode.dmSize = sizeof(DEVMODE);
outPrnProp.Mode.dmDriverExtra=1024;

inPrnProp.Mode.dmPaperSize = DMPAPER_A4; //DMPAPER_LETTER 등
inPrnProp.Mode.dmOrientation = DMORIENT_PORTRAIT; //DMORIENT_LANDSCAPE;
inPrnProp.Mode.dmPrintQuality = DMRES_HIGH;
//위의 항목 외에도 많은 속성들을 제어할 수 있음.
inPrnProp.Mode.dmFields = DM_PAPERSIZE | DM_ORIENTATION | DM_PRINTQUALITY;


OpenPrinter((LPTSTR)pPrn->Printers->Strings[0].c_str(),&pHandle,NULL);

//아래에서 in,out은 프린터의 입장에서 본 것임
//&outPrnProp.Mode :프린터로 부터 설정 정보를 받아옴 , DM_OUT_BUFFER을 지정해야 유효
//&inPrnProp.Mode : 설정 정보를 프린터로 보냄        ,DM_IN_BUFFER을 지정해야 유효
//DM_IN_PROMPT : 프린터 설정 대화상자를 띄우려면 지정
if( DocumentProperties(
   (HWND)Handle
  ,pHandle
  ,(LPTSTR)pPrn->Printers->Strings[0].c_str()
  ,&outPrnProp.Mode
  ,&inPrnProp.Mode
  ,DM_IN_BUFFER | DM_OUT_BUFFER | DM_IN_PROMPT )<0)
  {
   //ShowLastError();
  }
}


이성희 님이 쓰신 글 :
: 답변 감사합니다.
:
: 그런데 제가 기초가 많이 부족해서 어떻게 적용을 못하겠네요
:
: 좀더 자세하게 알려주시면 않될까요 죄송!!
:
: 부탁합니다.
:
: 김동현 님이 쓰신 글 :
: : 잘은 모르지만...
: :
: : 일단 윈도우에서 프린터 설정은 DEVMODE 라는 구조체를 통해서 합니다.
: :
: : 이 구조체를 MSDN에서 찾아보시면 여러가지 설정을 하실수 있는데요.
: :
: : 컨트롤 할수 있는 값들은 가로/세로 출력, 용지설정, 칼라/흑백출력, 출력매수, 양면출력, 트레이제
: : 어등등을 할수 있습니다.
: :
: : A4지가 아닌 다른 용지로 출력하고 싶으시면 DEVMODE의 dmPaperSize멤버를 테스트 해보시지요.
: :
: : 빌더에서 저 구조체를 제어하실려면 TPrinter객체로 작업하시면 되실겁니다.
: :
: : 그럼...
: :
: :
: : 이성희 님이 쓰신 글 :
: : : 프린터는 도트프린터를 사용합니다.
: : : 출력 용지는 80컬럼짜리 연속용지와 80컬럼 연속용지인데 사이즈가 반사이즈인 양식을 사용합니다.
: : : 구체적으로 말하면 계산서를 출력하는데 용지가 2장이 꼅쳐있는 용지입니다.
: : : 그래서 80컬럼의 반장만 찍으면 되는데 프린터를 컨트롤 할 수가 없어서 답답한 마음에 글을 올립니다.
: : :
: : : 그리고 출력되는 방식은 PaintBox에 출력내용을 그린후에 그 내용을 프린터로 보내는 방식을
: : : 선택했습니다.
: : :
: : : 현재 문제점은 프린터를 하면 한장 사이즈가 A4사이즈만큼 밀려올라 가기 때문에 정상적으로
: : : 출력하기가 매우 어렵습니다.
: : :
: : : TPrinter 의 PageHeight를 사용해 봤는데 속성이 ReadOnly더군요!!
: : :
: : : 여러 고수님들의 가르침 부탁드립니다.
: : : 급하고 답답한 마음에 바쁘게 글을 올려서 내용이 좀 오락가락하군요
: : :
: : : 필요한 부분에 대해서 말씀해 주시면 보충설명 올리겠습니다.
: : :
: : : 다시한번 도움 부탁드립니다. 읽어주셔서 감사!!^^

+ -

관련 글 리스트
25132 [질문]프린터 양식 설정방법 궁금합니다. 이성희 948 2003/04/10
25154     도트 프린터에서 연속 용지 출력은.... 김백일.cedar 2448 2003/04/10
25239         Re:도트 프린터에서 연속 용지 출력은.... 이성희 1491 2003/04/16
25224         Re:도트 프린터에서 연속 용지 출력은.... 이성희 1472 2003/04/16
25134     Re:[질문]프린터 양식 설정방법 궁금합니다. 김동현 1173 2003/04/10
25145         Re:Re:[질문]프린터 양식 설정방법 궁금합니다. 이성희 1027 2003/04/10
25156             Re:Re:Re:[질문]프린터 양식 설정방법 궁금합니다. 임문환 1620 2003/04/10
25159                 Re:Re:Re:Re:[질문]프린터 양식 설정방법 궁금합니다. 이성희 1417 2003/04/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.