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
[65074] Re:감사 합니다. 한나더 추가 질문이 있는데.
Julien [julien] 1336 읽음    2011-09-02 00:30
	TPrinter *p = Printer();
	wchar_t* prtName = p->Printers->Strings[p->PrinterIndex].w_str();

	int nNumPapers = DeviceCapabilities(prtName, NULL, DC_PAPERNAMES, NULL, NULL);

	wchar_t* paperNames = new wchar_t[nNumPapers * 64];
	ZeroMemory(paperNames, sizeof(wchar_t) * 64 * nNumPapers);

	POINT* paperSize = new POINT[nNumPapers];
	ZeroMemory(paperSize, sizeof(POINT) * nNumPapers);

	DeviceCapabilities(prtName, NULL, DC_PAPERNAMES, paperNames, NULL);
	DeviceCapabilities(prtName, NULL, DC_PAPERSIZE, (LPWSTR)paperSize, NULL);

	for( int i = 0; i < nNumPapers; i++ )
	{
		ListBox2->Items->Add(String().sprintf(L"%s :: %.1fmm X %.1fmm",
			paperNames, paperSize[i].x / 10., paperSize[i].y / 10.));
		paperNames += 64;
	}

뽀뽀중 님이 쓰신 글 :
: 프린터의 종이 크기 및 이름을 잘 가져 오는데...
:
: 프린터가 출력 가능한 용지크기만 아니라 다른 크기의 용지크기도 가져 옵니다.
:
:
: 그래서 선택된 프린터의 종이크기만 가져 오려면 어떻게 해야 하나요?
:
: 예를 들어, A4 까지 출력 가능한 프린터가 있고,
: A3까지 출력이 가능한 프린터가 있고
: A1까지 출력이 가능한 프린터가 있는데,
:
: 각 프린터에서 출력 가능한 용지크기의 리스트만 가져오는 방법은 없나요?
:
:
:
: Julien 님이 쓰신 글 :
: :
: : 	HANDLE hPrinter = NULL;
: : 	DWORD dwNeeded = 0, dwReturned = 0;
: : 	FORM_INFO_1 *forminfo = NULL;
: : 	bool bFlag;
: : 
: : 	bFlag = OpenPrinter(NULL, &hPrinter, NULL);
: : 	if(bFlag == false || hPrinter == NULL)
: : 		return;
: : 
: : 	try
: : 	{
: : 		bFlag = EnumForms(hPrinter, 1, 0, 0, &dwNeeded, &dwReturned);
: : 		if((!bFlag) && (GetLastError() != ERROR_INSUFFICIENT_BUFFER) || (dwNeeded == 0))
: : 			return;
: : 
: : 		forminfo = (FORM_INFO_1 *)GlobalAlloc(GPTR, dwNeeded);
: : 		if(forminfo == NULL)
: : 			return;
: : 
: : 		bFlag =  EnumForms(hPrinter, 1, (LPBYTE)forminfo, dwNeeded, &dwNeeded, &dwReturned);
: : 		if(!bFlag)
: : 		{
: : 			GlobalFree(forminfo);
: : 			return;
: : 		}
: : 
: : 		FORM_INFO_1 t;
: : 		for(unsigned int i = 0 ; i < dwReturned ; i++)
: : 		{
: : 			t = forminfo[i];
: : 			ListBox2->Items->Add(String().sprintf(L"Paper : %s, Size: %dmm x %dmm",
: : 				t.pName, t.Size.cx / 1000, t.Size.cy / 1000));
: : 		}
: : 	}
: : 	__finally
: : 	{
: : 		ClosePrinter(hPrinter);
: : 	}
: : 

: : 뽀뽀중 님이 쓰신 글 :
: : : PrinterSetupDialog1 로 프린터 및 용지크기를 설정 하였습니다
: : :
: : : 그리고 설정된 프린터 이름은
: : :
: : : Label3->Caption = Printer()->Printers->Strings[Printer()->PrinterIndex];
: : :
: : : 위와 같이 하여 가져 왔는데,
: : :
: : : 용지사이즈는 어떻게 해야 알수 있나요??
: : :
: : : 미리 감사 드립니다.

+ -

관련 글 리스트
65061 설정된 프린터 용지 크기를 알려면 어떻게 해야 하나요? 뽀뽀중 1559 2011/09/01
65075     Re:설정된 프린터 용지 크기를 알려면 어떻게 해야 하나요? Julien 1816 2011/09/02
65079         감사 합니다. 덕분에 문제를 해결 하였습니다. 좋은 하루 되세요 (냉무) 뽀뽀중 1362 2011/09/02
65062     Re:설정된 프린터 용지 크기를 알려면 어떻게 해야 하나요? Julien 1233 2011/09/01
65065         감사 합니다. 한나더 추가 질문이 있는데. 뽀뽀중 937 2011/09/01
65074             Re:감사 합니다. 한나더 추가 질문이 있는데. Julien 1336 2011/09/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.