2012-06-30 3 views
1

디바이스에서 인쇄 작업을 프로그래밍해야하는 프로젝트에서 작업 중입니다. WIN CE 6.0이 있습니다. Visual Studio 2005 (MFC) 사용하고 있습니다. 프린터는 모든 PCL 호환 프린터가 될 수 있습니다.레지스트리에서 DEVMODE 구조 읽기

현재 프린터 DC를 얻으려면 CreateDC()를 사용하고 있습니다.

hPrinterDC = CreateDC(L"PCL.DLL", L"Any Name", L"LPT1", NULL); 

이 호출을 사용하여 성공적으로 인쇄 할 수 있습니다. 여기서 DEVMODE 특정 입력 매개 변수를 NULL로 전달합니다. 그러나 이러한 인쇄 작업을보다 세밀하게 제어하기 위해 CreateVM()에 DEVMODE 정보를 전달해야합니다.

그 때문에 레지스트리에서 DEVMODE 특정 정보를 생성하기 위해 위에서 지정한대로 CreateDC()를 호출 할 계획입니다. 그런 다음이 DEVMODE 데이터를 레지스트리에서 로컬 변수로 읽고이 변수의 필수 필드 만 수정 한 다음이 변수를 CreateDC()에 전달하여 실제 인쇄 작업을 수행 할 프린터 DC를 가져올 수 있습니다.

DEVMODE의 특정 필드에 대한 충분한 정보가 없으므로 DEVMODE 구조체를 직접 초기화하는 것을 피합니다. dmDriverExtra.

레지스트리에서 DEVMODE와 같은 구조체를 안전하게 읽는 방법을 알아야합니까? 상대적인 예는 정말 도움이 될 것입니다.

친절 감사, 아프 탑

+0

직접적인 DEVMODE 초기화 관련 정보도 큰 도움이 될 수 있습니다. 필자는 특히 dmDriverExtra 필드 (및 필요한 경우 DEVMODE를 따르는 드라이버 관련 데이터)에 관심이 있습니다. – Aftab

답변

0

이 고대이지만, 단지의 경우 다른 사람이 여전히 유용 찾습니다.

DEVMODE에는 개인 영역과 공용 영역이 포함되어 있으므로 sizeof (DEVMODE)와 동일한 크기로 할당하면 일부 설정이 제외됩니다. DEVMODE를 초기화하는 올바른 방법은 DocumentProperties() 함수를 사용하여 기본 상태를 쿼리하는 것입니다. 마지막 매개 변수가 0으로 설정된 경우 필요한 바이트 수를 반환합니다.

관련 문제