인쇄 속성 시트를 사용 하 여

[이 예비 설명서 및 주제 변경.]

사용자는 문서를 인쇄 하기 위한 옵션을 선택할 수 있도록 인쇄 속성 시트를 표시 하는 샘플 코드에 설명 합니다. 샘플 코드를 먼저 할당 하 고 PRINTDLGEX 구조를 초기화 다음 속성 시트를 표시 하려면 PrintDlgEx 함수를 호출.

샘플 코드는 PRINTDLG 구조의 플래그 구성원에서 PD_RETURNDC 플래그를 설정합니다. 이렇게 하면 선택한 프린터 hDC 구성원에 대 한 장치 컨텍스트 핸들을 반환 하는 PrintDlgEx 함수. 함수에 다음과 같은 핸들 사용할 수 있습니다 프린터에 전송 하는 출력을 렌더링 하는 DrawText.

입력에 샘플 코드는 NULL로 hDevModehDevNames 멤버를 설정합니다. 이러한 멤버에 핸들을 반환 함수 S_OK를 반환 하는 경우 DEVMODEDEVNAMES 구조에서 사용자의 입력을 포함 하 고 프린터에 대 한 정보. 이 정보를 사용 하 여 선택한 프린터로 보낼 출력 준비.

DEVMODEDEVNAMES 버퍼 및 호출 샘플 코드 해제 인쇄 작업이 완료 된 후 해당 DeleteDC 함수를 디바이스 컨텍스트를 삭제 하려면.

HRESULT DisplayPrintPropertySheet (
    HWND hWnd / / 소유 창 하는 속성 시트
)
{
HRESULT hResult;
LPPRINTDLGEX pPDX = NULL;
LPPRINTPAGERANGE pPageRanges = NULL;

/ / PRINTDLGEX 구조를 할당 합니다.

pPDX (LPPRINTDLGEX) GlobalAlloc (GPTR, sizeof(PRINTDLGEX)); =
경우 (! pPDX)
    E_OUTOFMEMORY; 반환

/ / PRINTPAGERANGE 구조체의 배열을 할당 합니다.

pPageRanges (LPPRINTPAGERANGE) GlobalAlloc = (GPTR, 10 * sizeof(PRINTPAGERANGE));
경우 (! pPageRanges)
    E_OUTOFMEMORY; 반환

/ / PRINTDLGEX 구조를 초기화 합니다.

pPDX-gt; lStructSize = sizeof(PRINTDLGEX);
pPDX-> hwndOwner hWnd; =
pPDX-> hDevMode = NULL;
pPDX-> hDevNames = NULL;
pPDX-> hDC = NULL;
pPDX-> 플래그 PD_RETURNDC = (ko) | PD_COLLATE;
pPDX-> Flags2 = 0;
pPDX-> ExclusionFlags = 0;
pPDX-> nPageRanges = 0;
pPDX-> nMaxPageRanges = 10;
pPDX-> lpPageRanges = pPageRanges;
pPDX-> nMinPage = 1;
pPDX-> nMaxPage = 1000;
pPDX-> nCopies = 1;
pPDX-> hInstance = 0;
pPDX-> lpPrintTemplateName = NULL;
pPDX-> lpCallback = NULL;
pPDX-> nPropertyPages = 0;
pPDX-> lphPropertyPages = NULL;
pPDX-> nStartPage = START_PAGE_GENERAL;
pPDX-> dwResultAction = 0;

/ / 인쇄 속성 시트를 호출 합니다.

hResult = PrintDlgEx(pPDX);

만약 ((hResult = S_OK) & &
           pPDX-> dwResultAction = PD_RESULT_PRINT) {

/ / 사용자 그래서 인쇄 버튼을 클릭 하면
    / / 사용 하는 DC 및 기타 정보를 반환 합니다 / / PRINTDLGEX 구조에서 문서를 인쇄 하려면

}

경우 (pPDX-> hDC! = NULL) DeleteDC (pPDX-> hDC);
경우 (pPDX-> hDevMode! = NULL) GlobalFree (pPDX-> hDevMode); 
경우 (pPDX-> hDevNames! = NULL) GlobalFree (pPDX-> hDevNames); 

hResult; 반환
} 

 

Index