Àμ⠼Ӽº ½ÃÆ®¸¦ »ç¿ë ÇÏ ¿©

[ÀÌ ¿¹ºñ ¼³¸í¼­ ¹× ÁÖÁ¦ º¯°æ.]

»ç¿ëÀÚ´Â ¹®¼­¸¦ Àμâ Çϱâ À§ÇÑ ¿É¼ÇÀ» ¼±ÅÃÇÒ ¼ö ÀÖµµ·Ï Àμ⠼Ӽº ½ÃÆ®¸¦ Ç¥½Ã ÇÏ´Â »ùÇà Äڵ忡 ¼³¸í ÇÕ´Ï´Ù. »ùÇà Äڵ带 ¸ÕÀú ÇÒ´ç ÇÏ °í PRINTDLGEX ±¸Á¶¸¦ ÃʱâÈ­ ´ÙÀ½ ¼Ó¼º ½ÃÆ®¸¦ Ç¥½Ã ÇÏ·Á¸é PrintDlgEx ÇÔ¼ö¸¦ È£Ãâ.

»ùÇà ÄÚµå´Â PRINTDLG ±¸Á¶ÀÇ Ç÷¡±× ±¸¼º¿ø¿¡¼­ PD_RETURNDC Ç÷¡±×¸¦ ¼³Á¤ÇÕ´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ¼±ÅÃÇÑ ÇÁ¸°ÅÍ hDC ±¸¼º¿ø¿¡ ´ë ÇÑ ÀåÄ¡ ÄÁÅØ½ºÆ® ÇÚµéÀ» ¹Ýȯ ÇÏ´Â PrintDlgEx ÇÔ¼ö. ÇÔ¼ö¿¡ ´ÙÀ½°ú °°Àº ÇÚµé »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù ÇÁ¸°ÅÍ¿¡ Àü¼Û ÇÏ´Â Ãâ·ÂÀ» ·»´õ¸µ ÇÏ´Â DrawText.

ÀԷ¿¡ »ùÇà ÄÚµå´Â NULL·Î hDevMode ¹× hDevNames ¸â¹ö¸¦ ¼³Á¤ÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ¸â¹ö¿¡ ÇÚµéÀ» ¹Ýȯ ÇÔ¼ö S_OK¸¦ ¹Ýȯ ÇÏ´Â °æ¿ì DEVMODE ¿Í DEVNAMES ±¸Á¶¿¡¼­ »ç¿ëÀÚÀÇ ÀÔ·ÂÀ» Æ÷ÇÔ ÇÏ °í ÇÁ¸°ÅÍ¿¡ ´ë ÇÑ Á¤º¸. ÀÌ Á¤º¸¸¦ »ç¿ë ÇÏ ¿© ¼±ÅÃÇÑ ÇÁ¸°ÅÍ·Î º¸³¾ Ãâ·Â Áغñ.

DEVMODE ¿Í DEVNAMES ¹öÆÛ ¹× È£Ãâ »ùÇà ÄÚµå ÇØÁ¦ Àμâ ÀÛ¾÷ÀÌ ¿Ï·á µÈ ÈÄ ÇØ´ç 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