2009-03-26 4 views
1

.NET 응용 프로그램을 사용하여 DataCard Desktop Card 프린터를 제어하고 있는데 문제가 발생했습니다. 마그네틱 스트라이프 및 칩 인코딩을 실행하려면 프린터 인터랙티브 모드를 사용하도록 기본 프린터 API dll에서 함수를 호출해야합니다..NET 인쇄 API에서 장치 컨텍스트 검색

이 원시 함수를 호출하기 위해 P/Invoke 코드를 만들었습니다. 그러나 문제는이 메서드가 프린터 Device Context 핸들을 매개 변수로 사용하고 Gdi32 StartDoc 함수가 호출되기 전에 호출되어야한다는 것입니다.

.NET 인쇄 API에서 나는 Graphics 객체에서 hDC에 액세스 할 수 있습니다. 하지만 내가 볼 수있는 한, Graphics 객체는 StartDoc 함수가 호출 된 후에 만 ​​사용할 수 있습니다.

그럼 내 질문은 누군가 StartDoc이 호출되기 전에 컨텍스트를 검색하는 방법을 알고 있다면 무엇입니까?

답변

1

당신은 프린터 핸들 (HANDLE)를 검색 한 후 (StartDoc 전) 프린터 DC 언제든지 얻을이 핸들에 전달하여 CreateDC를 호출 할 OpenPrinter을 할 수 있습니다.

+0

"winspool.drv"및 "gdi32.dll"기능을 사용한다고 가정합니까? 나는 이것이 네이티브 C apis를 사용하는 것이 어렵지 않다는 것을 알고 있습니다. 하지만 내 응용 프로그램은 .NET 응용 프로그램이므로 가능한 한 .NET API를 사용할 수 있기를 바랍니다. –

+0

당신은 이미 P/Invoke를 사용하고 있습니다. 그래서 나는이 답장을 모험했습니다. 질문에서 명확하게 귀하의 필요를 언급하십시오. – dirkgently

+0

분명히 .NET 프린팅 API에 문제가 있다고 언급 한 것 같습니다. 그러나 Gdi32에 대한 내 자신의 p/invoke 래퍼를 작성하는 것이 이것을 달성하는 유일한 방법 인 것 같습니다. –