[ÀÌ ¿¹ºñ ¼³¸í¼ ¹× ÁÖÁ¦ º¯°æ.]
»ç¿ëÀÚ´Â ¹®¼¸¦ Àμâ Çϱâ À§ÇÑ ¿É¼ÇÀ» ¼±ÅÃÇÒ ¼ö ÀÖµµ·Ï Àμ⠼Ӽº ½ÃÆ®¸¦ Ç¥½Ã ÇÏ´Â »ùÇà Äڵ忡 ¼³¸í ÇÕ´Ï´Ù. »ùÇà Äڵ带 ¸ÕÀú ÇÒ´ç ÇÏ °í 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; ¹Ýȯ
}