DocumentProperties 함수

DocumentProperties 함수는 프린터 초기화 정보를 검색하거나 수정하거나 지정된 프린터에 대한 프린터 구성 속성 시트를 표시합니다.

구문

LONG DocumentProperties(
  _In_  HWND     hWnd,
  _In_  HANDLE   hPrinter,
  _In_  LPTSTR   pDeviceName,
  _Out_ PDEVMODE pDevModeOutput,
  _In_  PDEVMODE pDevModeInput,
  _In_  DWORD    fMode
);

매개 변수

hWnd [in]

프린터 구성 속성 시트의 부모 창에 대한 핸들입니다.

hPrinter [in]

프린터 개체에 대한 핸들입니다. OpenPrinter 또는 AddPrinter 함수를 사용하여 프린터 핸들을 검색합니다.

pDeviceName [in]

프린터 구성 속성 시트가 표시되는 디바이스의 이름을 지정하는 null로 끝나는 문자열에 대한 포인터입니다.

pDevModeOutput [out]

사용자가 지정한 프린터 구성 데이터를 수신하는 DEVMODE 구조체에 대한 포인터입니다.

pDevModeInput [in]

운영 체제에서 속성 시트 컨트롤을 초기화하는 데 사용하는 DEVMODE 구조체에 대한 포인터입니다.

이 매개 변수는 fMode 매개 변수에 DM_IN_BUFFER 플래그가 설정된 경우에만 사용됩니다. DM_IN_BUFFER 설정되지 않은 경우 운영 체제는 프린터의 기본 DEVMODE를 사용합니다.

fMode [in]

함수가 수행하는 작업입니다. 이 매개 변수가 0이면 DocumentProperties 함수는 프린터 드라이버의 DEVMODE 데이터 구조에 필요한 바이트 수를 반환합니다. 그렇지 않으면 다음 상수 중 하나 이상을 사용하여 이 매개 변수에 대한 값을 생성합니다. 그러나 인쇄 설정을 변경하려면 애플리케이션에서 하나 이상의 입력 값과 하나의 출력 값을 지정해야 합니다.

의미
DM_IN_BUFFER
입력 값입니다. 프롬프트, 복사 또는 업데이트하기 전에 함수는 프린터 드라이버의 현재 인쇄 설정을 pDevModeInput 매개 변수로 지정된 DEVMODE 구조의 설정과 병합합니다. 함수는 DEVMODE 구조체의 dmFields 멤버로 지정된 멤버에 대해서만 구조를 업데이트합니다. 이 값은 DM_MODIFY 정의됩니다. 병합 중에 충돌하는 경우 pDevModeInput으로 지정된 DEVMODE 구조체의 설정이 프린터 드라이버의 현재 인쇄 설정을 재정의합니다.
DM_IN_PROMPT
입력 값입니다. 이 함수는 프린터 드라이버의 인쇄 설정 속성 시트를 표시한 다음 프린터의 DEVMODE 데이터 구조에 있는 설정을 사용자가 지정한 값으로 변경합니다. 이 값은 DM_PROMPT 정의됩니다.
DM_OUT_BUFFER
출력 값입니다. 이 함수는 pDevModeOutput 매개 변수로 지정된 DEVMODE 데이터 구조에 개인 데이터를 포함한 프린터 드라이버의 현재 인쇄 설정을 씁니다. 호출자는 정보를 포함할 수 있는 충분히 큰 버퍼를 할당해야 합니다. 비트 DM_OUT_BUFFER 집합이 명확하면 pDevModeOutput 매개 변수는 NULL일 수 있습니다. 이 값은 DM_COPY 정의됩니다.

반환 값

fMode 매개 변수가 0이면 반환 값은 프린터 드라이버 초기화 데이터를 포함하는 데 필요한 버퍼의 크기입니다. 프린터 드라이버가 구조체에 프라이빗 데이터를 추가하는 경우 이 버퍼는 DEVMODE 구조체보다 클 수 있습니다.

함수가 속성 시트를 표시하는 경우 반환 값은 사용자가 선택하는 단추에 따라 IDOK 또는 IDCANCEL입니다.

함수가 속성 시트를 표시하지 않고 성공하면 반환 값은 IDOK입니다.

함수가 실패하면 반환 값이 0보다 작습니다.

설명

참고

이는 차단 또는 동기 함수이며 즉시 반환되지 않을 수 있습니다. 이 함수가 반환되는 빈도는 애플리케이션을 작성할 때 예측하기 어려운 네트워크 상태, 인쇄 서버 구성 및 프린터 드라이버 구현 요소와 같은 런타임 요인에 따라 달라집니다. 사용자 인터페이스와의 상호 작용을 관리하는 스레드에서 이 함수를 호출하면 애플리케이션이 응답하지 않는 것처럼 보일 수 있습니다.

pDeviceName 매개 변수가 가리키는 문자열은 GetPrinter 함수를 호출하여 가져올 수 있습니다.

프린터 드라이버에서 실제로 사용하는 DEVMODE 구조체에는 디바이스 독립적 부분(위에서 정의한 대로)과 각 드라이버 및 드라이버 버전에 따라 크기와 콘텐츠에 따라 달라지는 드라이버별 부분이 포함됩니다. 이 드라이버 의존성 때문에 애플리케이션은 버퍼를 할당하기 전에 DEVMODE 구조체의 올바른 크기에 대해 드라이버를 쿼리하는 것이 매우 중요합니다.

애플리케이션에 로컬인 인쇄 설정을 변경하려면 애플리케이션이 다음 단계를 수행해야 합니다.

  1. DocumentProperties를 호출하고 fMode 매개 변수에 0을 지정하여 전체 DEVMODE 구조에 필요한 바이트 수를 가져옵니다.
  2. 전체 DEVMODE 구조에 대한 메모리를 할당합니다.
  3. DocumentProperties를 호출하여 현재 프린터 설정을 가져옵니다. 2단계에서 pDevModeOutput 매개 변수로 할당된 DEVMODE 구조체에 대한 포인터를 전달하고 DM_OUT_BUFFER 값을 지정합니다.
  4. 반환된 DEVMODE 구조체의 적절한 멤버를 수정하고 DEVMODEdmFields 멤버에서 해당 비트를 설정하여 변경된 멤버를 나타냅니다.
  5. DocumentProperties를 호출하고 수정된 DEVMODE 구조를 pDevModeInputpDevModeOutput 매개 변수로 다시 전달하고 DM_IN_BUFFERDM_OUT_BUFFER 값(OR 연산자를 사용하여 결합됨)을 모두 지정합니다. DocumentProperties에 대한 세 번째 호출에서 반환된 DEVMODE 구조체를 CreateDC 함수 호출에서 인수로 사용할 수 있습니다.

현재 프린터 설정을 사용하여 프린터 디바이스 컨텍스트에 대한 핸들을 만들려면 위에서 설명한 대로 DocumentProperties 를 두 번만 호출하면 됩니다. 첫 번째 호출은 전체 DEVMODE 의 크기를 가져오고 두 번째 호출은 현재 프린터 설정을 사용하여 DEVMODE 를 초기화합니다. 초기화된 DEVMODECreateDC 에 전달하여 프린터 디바이스 컨텍스트에 대한 핸들을 가져옵니다.

요구 사항

요구 사항
지원되는 최소 클라이언트
Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버
Windows 2000 Server[데스크톱 앱만]
헤더
Winspool.h(Windows.h 포함)
라이브러리
Winspool.lib
DLL
Winspool.drv
유니코드 및 ANSI 이름
DocumentPropertiesW (유니코드) 및 DocumentPropertiesA (ANSI)

추가 정보

인쇄

인쇄 스풀러 API 함수

AdvancedDocumentProperties

CreateDC

Devmode

GetPrinter

OpenPrinter