DevCap ¿¹Á¦¿¡¼ ÇÁ¸°ÅÍÀÇ À̸§À» ±¸ÇÒ ¶§ Àá½Ã DEVMODE ±¸Á¶Ã¼¸¦ ÂüÁ¶ÇÏ¿´´Âµ¥ ÀÌ ±¸Á¶Ã¼¿¡ ´ëÇØ ÀÚ¼¼ÇÏ°Ô ¾Ë¾Æ º¸ÀÚ. ÀÌ ±¸Á¶Ã¼´Â ÇÁ¸°ÅÍÀÇ ÃʱâÈ Á¤º¸¿Í ȯ°æ¿¡ ´ëÇÑ Á¤º¸¸¦ °¡Áö´Âµ¥ ÇÁ¸°ÅÍ¿¡ °ü·ÃµÈ ¸ðµç Á¤º¸¸¦ ´Ù °¡Áö°í ÀÖ´Â ¾ÆÁÖ Áß¿äÇÑ ±¸Á¶Ã¼ÀÌ¸ç ¶ÇÇÑ ÇÁ¸°ÅÍÀÇ ¼³Á¤ »óŸ¦ ÇÁ·Î±×·¥ÀÌ °Á¦·Î ¹Ù²Ù´Â ¼ö´ÜÀ¸·Î È°¿ëµÈ´Ù. ÀÌ ±¸Á¶Ã¼¸¦ Á¤º¹ÇØ¾ß ÇÁ¸°Å͸¦ ¸¶À½´ë·Î ¿ä¸®ÇÒ ¼ö ÀÖ´Ù.
ÀÌ ±¸Á¶Ã¼´Â ¿©·¯ °¡Áö ¹æ¹ýÀ¸·Î ±¸ÇÒ ¼ö Àִµ¥ EnumPrinters ÇÔ¼ö·Î ÇÁ¸°Å͸¦ ¿°ÅÇÒ ¶§ ±¸ÇØÁö´Â PRINTER_INFO_2 ±¸Á¶Ã¼¿¡µµ Æ÷ÇԵǾî ÀÖÀ¸¸ç OpenPrinter ÇÔ¼ö·Î ÇÁ¸°ÅÍÀÇ ÇÚµéÀ» ±¸ÇÒ ¶§ °°ÀÌ ±¸ÇÒ ¼öµµ ÀÖ´Ù. ¶ÇÇÑ Àμ⠰øÅë ´ëÈ»óÀÚ È£Ãâ½Ã PRINTDLG ±¸Á¶Ã¼ÀÇ hDevMode ¸â¹ö¿¡¼ ÀÌ ±¸Á¶Ã¼¸¦ ±¸ÇÒ ¼öµµ ÀÖ°í GetPrinter, DocumentProperties µî°ú °°ÀÌ ÀÌ ±¸Á¶Ã¼¸¦ ´Ù·ç´Â Àü¹®ÀûÀÎ ÇÔ¼öµµ ÀÖ´Ù. ±×·¸´Ù¸é ÀÌ ±¸Á¶Ã¼°¡ °ú¿¬ ¾î¶»°Ô Á¤ÀǵǾî ÀÖ´ÂÁö ÀÏ´Ü º¸µµ·Ï ÇÏÀÚ.
typedef struct _devicemode { BCHAR dmDeviceName[CCHDEVICENAME]; WORD dmSpecVersion; WORD dmDriverVersion; WORD dmSize; WORD dmDriverExtra; DWORD dmFields; union { struct { short dmOrientation; short dmPaperSize; short dmPaperLength; short dmPaperWidth; }; POINTL dmPosition; }; short dmScale; short dmCopies; short dmDefaultSource; short dmPrintQuality; short dmColor; short dmDuplex; short dmYResolution; short dmTTOption; short dmCollate; |
BCHAR dmFormName[CCHFORMNAME]; WORD dmLogPixels; DWORD dmBitsPerPel; DWORD dmPelsWidth; DWORD dmPelsHeight; union { DWORD dmDisplayFlags; DWORD dmNup; } DWORD dmDisplayFrequency; #if(WINVER >= 0x0400) DWORD dmICMMethod; DWORD dmICMIntent; DWORD dmMediaType; DWORD dmDitherType; DWORD dmReserved1; DWORD dmReserved2; #if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400) DWORD dmPanningWidth; DWORD dmPanningHeight; #endif #endif /* WINVER >= 0x0400 */ } DEVMODE; |
º¸´Ù½ÃÇÇ ÇÁ¸°ÅͶó´Â ¹°°ÇÀÌ ¿ö³« º¹ÀâÇÏ´Ù º¸´Ï ±× ÃʱâÈ Á¤º¸ÀÇ ¾çµµ ´ë´ÜÇÏ´Ù. ±×·¯³ª ´õ ±â°¡ ¸·Èù °ÍÀº ÀÌ ±¸Á¶Ã¼°¡ ¿©±â¼ ³¡³ª´Â °ÍÀÌ ¾Æ´Ï¶ó´Â Á¡ÀÌ´Ù. ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹ö´Â ´ëºÎºÐÀÇ ÇÁ¸°Åͳª ÀåÄ¡¿¡ °øÅëÀûÀ¸·Î Àû¿ëµÇ´Â Á¤º¸¸¸ °¡Áö°í ÀÖÀ¸¸ç °³º° ÇÁ¸°ÅÍÀÇ °íÀ¯ Á¤º¸¸¦ Ãß°¡·Î ´õ °¡Áú ¼ö ÀÖ´Ù. °íÀ¯ Á¤º¸´Â ÀÌ ±¸Á¶Ã¼ÀÇ µÚÂÊ¿¡ À̾îÁö´Âµ¥ ±× Å©±â´Â ÀÌ ±¸Á¶Ã¼º¸´Ù ÀϹÝÀûÀ¸·Î ´õ Å©¸ç ÇÁ¸°ÅÍ¿¡ µû¶ó °íÀ¯ÇÏ°í ´Ù¾çÇÏ´Ù.
Áö±Ý±îÁö ¸¸µé¾îÁø ÇÁ¸°ÅÍÀÇ Á¾·ù°¡ ¼öõ°¡Áö´Â ´õ µÉ °ÍÀÌ°í Áö±Ý ÀÌ ¼ø°£¿¡µµ »õ·Î¿î ÇÁ¸°Å͵éÀÌ ¸¸µé¾îÁö°í ÀÖ´Ù. µµÆ® ÇÁ¸°ÅͺÎÅÍ, À×Å©Á¬, ·¹ÀÌÀú, ÆäÀÌÁö ÇÁ¸°ÅÍ, ½ÉÁö¾î Çʸ§À̳ª ¼¶À¯, öÆÇ¿¡ Àμ⸦ ÇÒ ¼ö ÀÖ´Â °Íµµ ÀÖ°í Ç÷ÎÅÍ ¹æ½ÄÀÇ ÇÁ¸°Å͵µ ÀÖ´Ù. Àμ⠱â¼úÀº ³¯·Î ¹ßÀüÇÏ°í ÀÖÀ¸¸ç ¾ÕÀ¸·Î ¾î¶² ±â»ó õ¿ÜÇÑ ¹æ½ÄÀÇ ÇÁ¸°ÅÍ°¡ ¸¸µé¾îÁúÁö ¾Ë ¼ö°¡ ¾ø´Ù. ±×·¡¼ DEVMODE¸¦ óÀ½ Á¤ÀÇÇÒ ¶§ ¸ðµç ÇÁ¸°ÅÍÀÇ ¼³Á¤ Á¤º¸¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖµµ·Ï ¸¸µç´Ù´Â °Í ÀÚü°¡ ºÒ°¡´ÉÇÏ¸ç ±×·¡¼ °øÅëÀûÀ¸·Î Àû¿ëµÇ´Â ¼Ó¼º¸¸ Æ÷ÇÔ½ÃÄÑ ³õ°í ³ª¸ÓÁö °íÀ¯ Á¤º¸´Â ÀÌ ±¸Á¶Ã¼ µÚÂÊ¿¡ Á¦Á¶ ¾÷ü°¡ µ¡ºÙÀÏ ¼ö ÀÖµµ·Ï µÇ¾î ÀÖ´Â °ÍÀÌ´Ù. ´ÙÀ½Àº µÎ°¡Áö ƯÀÌÇÑ ÇÁ¸°ÅÍÀÇ ±âº» ¼³Á¤ ȸéÀÌ´Ù.
HP 1050C´Â ĵƮÁö ÀüÁö¿¡µµ ÀμâÇÒ ¼ö ÀÖ´Â ·Ñ ÇÁ¸°ÅÍÀε¥ ÀÌ ÇÁ¸°ÅÍ°¡ Á¦°øÇÏ´Â ÀÚµ¿ ȸÀü, ¼± ´Ùµë±â, ÀÚµ¿ Àý´Ü±â »ç¿ë µîÀÇ ¿É¼ÇÀº ÀüÇô ÀϹÝÀûÀÌÁö ¾Ê´Ù. ¿À¸¥ÂÊÀº ¸¹ÀÌ »ç¿ëÇÏ´Â Àμâ Àü¿ë ¼ÒÇÁÆ®¿þ¾îÀÎ FinePrinter¶ó´Â Á¦Ç°ÀÇ µî·Ï Á¤º¸ ȸéÀε¥ Å׵θ® ¼³Á¤, ÀÛ¾÷ ºÐ¸®, Á¦º» ¿©¹é µîÀº ÀϹÝÀûÀÎ ÇÁ¸°ÅÍ¿¡ ÀÖ´Â ¼Ó¼ºÀÌ ¾Æ´Ï´Ù. ÇÁ¸°ÅÍÀÇ °íÀ¯ Á¤º¸´Â ¾ÆÁÖ Æ¯¼öÇϸç ÀϹÝÈ°¡ ºÒ°¡´ÉÇÏ´Ù´Â °ÍÀ» ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀÌ·± °íÀ¯ÇÑ ¼³Á¤ Á¤º¸´Â ÇÁ¸°ÅÍ Á¦Á¶ ¾÷ü°¡ µå¶óÀ̹ö¸¦ ¸¸µé ¶§ Æ÷ÇÔ½ÃÅ°°Ô µÇ¸ç ÀÌ Á¤º¸´Â DEVMODE µÚ¿¡ µ¡ºÙ¿©ÁüÀ¸·Î½á ÇÁ·Î±×·¥¿¡¼ Á¦¾îÇÒ ¼ö ÀÖ´Ù.
DEVMODEÀÇ Å©±â°¡ °¡º¯ÀûÀÌÁö¸¸ ´ÙÇེ·´°Ôµµ ¿ì¸®´Â DEVMODE¿¡ Æ÷ÇԵǾî ÀÖ´Â ¸â¹ö¸¸À» ´Ù·ê »Ó ÇÁ¸°ÅÍÀÇ °íÀ¯ Á¤º¸¿¡ °ü½ÉÀ» °¡Á®¾ß ÇÒ °æ¿ì°¡ °ÅÀÇ ¾ø´Ù. ¿Ö³ÄÇϸé ÀÌ·± ¼³Á¤ »óÅ´ »ç¿ëÀÚ°¡ Á÷Á¢ Á¦¾îÆÇ¿¡¼ Á¦Á¶ ¾÷ü°¡ Á¦°øÇÏ´Â ¼³Á¤ ´ëÈ»óÀÚ¸¦ ÅëÇØ ¿øÇÏ´Â ¹Ù´ë·Î ¼öÁ¤ÇÏ´Â °ÍÀÌ ¿øÄ¢À̸ç ÇÁ·Î±×·¥À̶õ ¾î¶² ÇÁ¸°Å͸¦ ¼±ÅÃÇÏ´õ¶óµµ ÀμⰡ °¡´ÉÇÑ, Áï ÇÁ¸°ÅÍ¿¡ µ¶¸³ÀûÀ̾î¾ß Çϱ⠶§¹®ÀÌ´Ù. ±×·¯³ª ¸¸¾à ƯÁ¤ÇÑ ÇÁ¸°Å͸¦ À§ÇÑ ÇÁ·Î±×·¥À» ¸¸µç´Ù¸é À̶§´Â ¹°·Ð DEVMODE µÚÂÊÀÇ Á¤º¸µµ °°ÀÌ ÇÁ·Î±×·¡¹ÖÇØ¾ß ÇÒ °ÍÀÌ´Ù.
DEVMODEÀÇ ¸â¹ö Áß ¼öÁ÷ ÁÖÆļöó·³ ÇÁ¸°ÅÍ¿¡´Â ÀüÇô ÇØ´çµÇÁö ¾Ê´Â °Íµµ ÀÖ°í ÇÁ·Î±×·¥¿¡¼ Á÷Á¢ ¹Ù²Ù¾î¾ß ÇÒ ÇÊ¿ä°¡ ¾ø´Â °Íµéµµ ¸¹ÀÌ ÀÖ´Ù. ´ÙÀ½Àº ÀÌ ±¸Á¶Ã¼ Áß ÀÚÁÖ »ç¿ëµÇ´Â ¸î°¡Áö¸¸À» Á¤¸®ÇÑ °ÍÀÌ´Ù.
¸â¹ö |
¼³¸í |
dmDeviceName |
ÇÁ¸°ÅÍÀÇ À̸§ÀÌ¸ç ¹®ÀÚ¿·Î µÇ¾î ÀÖ´Ù. ÀÌ À̸§Àº ½Ã½ºÅÛÀÌ ÇÁ¸°Å͸¦ ±¸ºÐÇÏ´Â ÀÏÁ¾ÀÇ ¸íĪÀ¸·Î »ç¿ëµÈ´Ù. |
dmSize |
ÀÌ ±¸Á¶Ã¼ÀÇ Å©±âÀÌ¸ç ¹öÀü È®Àο¡ »ç¿ëµÈ´Ù. sizeof(DEVMODE)¿Í µ¿ÀÏÇÑ Å©±â¸¦ °¡Áø´Ù. |
dmDriverExtra |
µå¶óÀ̹öÀÇ °íÀ¯ µ¥ÀÌÅÍ Å©±âÀÌ´Ù. DEVMODE ±¸Á¶Ã¼ ´ÙÀ½¿¡ ÀÌ Å©±â¸¸ÅÀÇ µ¥ÀÌÅÍ°¡ ´õ ÀÖ´Ù. |
dmFields |
DEVMODE ±¸Á¶Ã¼·ÎºÎÅÍ ÃʱⰪÀ» ¼³Á¤ÇÒ ¶§ ¾î¶² ¸â¹ö°¡ ÃʱâÈ¿¡ »ç¿ëµÉ °ÍÀÎÁö¸¦ ÁöÁ¤ÇÑ´Ù. ¿¹¸¦ µé¾î ¿ëÁöÀÇ ¹æÇâÀ» ¹Ù²Ù°í ½Í´Ù¸é ÀÌ Çʵ忡 DM_ORIENTATIONÀ» ÁÖ°í ¿ëÁö Á¾·ù¸¦ ¹Ù²Ù°í ½Í´Ù¸é DM_PAPERSIZE¸¦ ÁÖ¸é µÈ´Ù. |
dmOrientation |
¿ëÁöÀÇ ¹æÇâÀ» ³ªÅ¸³½´Ù. ¼¼·Î ÀμâÀÏ ¶§´Â DMORIENT_PORTRAIT°¡ µÇ¸ç °¡·Î ÀμâÀÏ ¶§´Â DMORIENT_LANDSCAPE°¡ µÈ´Ù. |
dmPaperSize |
¿ëÁöÀÇ Á¾·ù¸¦ ³ªÅ¸³½´Ù. DMPAPER_LETTER, DMPAPER_A4 °°Àº »ó¼ö°¡ Á¤ÀǵǾî ÀÖ´Ù. Ä¿½ºÅÒ ¿ëÁö¸¦ »ç¿ëÇÒ ¶§´Â ÀÌ ¸â¹ö°¡ 0ÀÌ µÇ¸ç ´ÙÀ½ µÎ ¸â¹ö°¡ ¿ëÁöÀÇ Å©±â¸¦ ÁöÁ¤ÇÑ´Ù. |
dmPaperLength |
¿ëÁöÀÇ ±æÀ̸¦ 1/10¹Ð¸®¹ÌÅÍ ´ÜÀ§·Î ÁöÁ¤ÇÑ´Ù. |
dmPaperWidth |
¿ëÁöÀÇ ÆøÀ» 1/10¹Ð¸®¹ÌÅÍ ´ÜÀ§·Î ÁöÁ¤ÇÑ´Ù. |
dmScale |
È®´ë ºñÀ²À» ÁöÁ¤ÇÏ´Â ¹éºÐÀ²ÀÌ´Ù. |
dmCopies |
Àμ⠸żö¸¦ ÁöÁ¤ÇÑ´Ù. |
dmDuplex |
¾ç¸é Àμ⠹æ½ÄÀ» ÁöÁ¤ÇÑ´Ù. |
°¢ ¸â¹ö°¡ °¡Áú ¼ö ÀÖ´Â °ªÀÇ Á¾·ù³ª ³ª¸ÓÁö ¸â¹ö¿¡ ´ëÇؼ´Â ·¹ÆÛ·±½º¸¦ Âü°íÇϱ⠹ٶóµÇ À§ Ç¥¿¡ ÀÖ´Â °Í¸¸ ÀÌÇØÇصµ 99% ÃæºÐÇÒ °ÍÀÌ´Ù. ±×·³ ÀÌÁ¦ ÇÁ¸°ÅͷκÎÅÍ DEVMODE¸¦ ±¸ÇØ Ãâ·ÂÇÏ´Â ¿¹Á¦¸¦ ¸¸µé¾î º¸ÀÚ. ¼Ò½º´Â ´ÙÀ½°ú °°´Ù.
void DisplayDevMode2()
{
char szPrinter[128];
DWORD dwPrinter=128;
HANDLE hPrinter;
DEVMODE *dm;
LONG ret;
HDC hdc;
int y=2;
char Mes[256];
hdc=GetDC(hWndMain);
if (MyGetDefaultPrinter(szPrinter) == FALSE) {
return;
}
OpenPrinter(szPrinter,&hPrinter,NULL);
ret=DocumentProperties(hWndMain, hPrinter, szPrinter, NULL, NULL, 0);
dm=(DEVMODE *)malloc(ret);
DocumentProperties(hWndMain, hPrinter, szPrinter, dm, NULL, DM_OUT_BUFFER);
// ÃʱâÈ Á¤º¸ ±¸ÇÔ
wsprintf(Mes,"±âº» ÇÁ¸°ÅÍ À̸§=%s",dm->dmDeviceName);
TextOut(hdc,10,y++*20,Mes,lstrlen(Mes));
wsprintf(Mes,"µå¶óÀ̹ö ¹öÀü=%d", dm->dmDriverVersion);
TextOut(hdc,10,y++*20,Mes,lstrlen(Mes));
wsprintf(Mes,"°ø¿ë µ¥ÀÌÅÍÀÇ Å©±â=%d, µå¶óÀ̹ö °íÀ¯ µ¥ÀÌÅÍÀÇ Å©±â=%d",
dm->dmSize, dm->dmDriverExtra);
TextOut(hdc,10,y++*20,Mes,lstrlen(Mes));
wsprintf(Mes,"¿ëÁöÀÇ Á¾·ù=%d, °¡·Î=%d, ¼¼·Î=%d, ¿ëÁöÀÇ ¹æÇâ=%s",
dm->dmPaperSize, dm->dmPaperWidth, dm->dmPaperLength,
dm->dmOrientation == DMORIENT_PORTRAIT ? "¼¼·Î":"°¡·Î");
TextOut(hdc,10,y++*20,Mes,lstrlen(Mes));
wsprintf(Mes,"XÇØ»óµµ=%d, YÇØ»óµµ=%d", dm->dmPrintQuality, dm->dmYResolution);
TextOut(hdc,10,y++*20,Mes,lstrlen(Mes));
free(dm);
ClosePrinter(hPrinter);
ReleaseDC(hWndMain,hdc);
}
void DisplayDevMode1()
{
PRINTDLG pd;
HDC hPrtdc;
DEVMODE *dm;
char szPrinter[128];
char Mes[256];
HDC hdc;
int y=2;
hdc=GetDC(hWndMain);
// ÇÁ¸°ÅÍ¿¡ °üÇÑ Á¤º¸¸¦ ±¸ÇÏ°í DC¸¦ ¸¸µç´Ù.
memset(&pd,0,sizeof(PRINTDLG));
pd.lStructSize=sizeof(PRINTDLG);
pd.Flags=PD_RETURNDC;
pd.hwndOwner=hWndMain;
pd.nFromPage=1;
pd.nToPage=1;
pd.nMinPage=1;
pd.nMaxPage=1;
pd.nCopies=1;
PrintDlg(&pd);
hPrtdc=pd.hDC;
if (hPrtdc == NULL)
return;
// DEVMODEÀÇ ¹øÁö¸¦ ±¸ÇÑ´Ù.
dm=(DEVMODE *)GlobalLock(pd.hDevMode);
lstrcpy(szPrinter,(LPCTSTR)dm->dmDeviceName);
// ÃʱâÈ Á¤º¸ ±¸ÇÔ
wsprintf(Mes,"¼±ÅÃÇÑ ÇÁ¸°ÅÍ À̸§=%s",dm->dmDeviceName);
TextOut(hdc,10,y++*20,Mes,lstrlen(Mes));
wsprintf(Mes,"µå¶óÀ̹ö ¹öÀü=%d", dm->dmDriverVersion);
TextOut(hdc,10,y++*20,Mes,lstrlen(Mes));
wsprintf(Mes,"°ø¿ë µ¥ÀÌÅÍÀÇ Å©±â=%d, µå¶óÀ̹ö °íÀ¯ µ¥ÀÌÅÍÀÇ Å©±â=%d",
dm->dmSize, dm->dmDriverExtra);
TextOut(hdc,10,y++*20,Mes,lstrlen(Mes));
wsprintf(Mes,"¿ëÁöÀÇ Á¾·ù=%d, °¡·Î=%d, ¼¼·Î=%d, ¿ëÁöÀÇ ¹æÇâ=%s",
dm->dmPaperSize, dm->dmPaperWidth, dm->dmPaperLength,
dm->dmOrientation == DMORIENT_PORTRAIT ? "¼¼·Î":"°¡·Î");
TextOut(hdc,10,y++*20,Mes,lstrlen(Mes));
wsprintf(Mes,"XÇØ»óµµ=%d, YÇØ»óµµ=%d", dm->dmPrintQuality, dm->dmYResolution);
TextOut(hdc,10,y++*20,Mes,lstrlen(Mes));
GlobalUnlock(pd.hDevMode);
ReleaseDC(hWndMain,hdc);
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
char Mes[]="¿ÞÂÊ ¹öÆ°=ÇÁ¸°ÅÍ ¼±ÅÃ, ¿À¸¥ÂÊ ¹öÆ°=±âº» ÇÁ¸°ÅÍÀÇ Á¤º¸";
switch(iMessage) {
case WM_LBUTTONDOWN:
InvalidateRect(hWnd,NULL,TRUE);
UpdateWindow(hWnd);
DisplayDevMode1();
return 0;
case WM_RBUTTONDOWN:
InvalidateRect(hWnd,NULL,TRUE);
UpdateWindow(hWnd);
DisplayDevMode2();
return 0;
case WM_PAINT:
hdc=BeginPaint(hWnd, &ps);
TextOut(hdc,10,10,Mes,lstrlen(Mes));
EndPaint(hWnd, &ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
DEVMODE¸¦ ±¸ÇÏ´Â ¹æ¹ýÀº ¿©·¯ °¡Áö°¡ ÀÖÁö¸¸ Çö½ÇÀûÀ¸·Î µÎ °¡Áö ¹æ¹ý¸¸ ¾Ë¾Æ µÎ¸é µÉ °Í °°´Ù. ù¹ø° ¹æ¹ýÀº Àμ⠰øÅë ´ëÈ»óÀÚ·Î »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ ÇÁ¸°ÅÍ¿¡ ´ëÇÑ ¼³Á¤ »óŸ¦ Á¶»çÇÏ´Â ¹æ¹ýÀÌ¸ç ¿¹Á¦¿¡¼´Â ¸¶¿ì½º ¿ÞÂÊ ¹öÆ°À» ´©¸¦ ¶§ È£ÃâµÇ´Â DisplayDevMode1ÇÔ¼ö¿¡¼ ÀÌ ¹æ¹ýÀ» º¸¿©ÁÖ°í ÀÖ´Ù. Àμ⠴ëÈ»óÀÚ È£Ãâ ÈÄ PRINTDLG ±¸Á¶Ã¼ÀÇ hDevMode ¸â¹ö¸¦ ÀÐÀ¸¸é ÀÌ ±¸Á¶Ã¼¸¦ ±¸ÇÒ ¼ö ÀÖ´Ù. ´Ü DEVMODE°¡ °¡º¯ÀûÀÎ Å©±â¸¦ °¡Áö±â ¶§¹®¿¡ hDevMode ¸â¹ö ÀÚü°¡ ÀÌ ±¸Á¶Ã¼´Â ¾Æ´Ï¸ç ÀÌ ±¸Á¶Ã¼¸¦ Æ÷ÇÔÇÏ´Â ¸Þ¸ð¸®ÀÇ ÇÚµéÀ̹ǷΠGlobalLockÀ¸·Î Æ÷ÀÎÅ͸¦ ¾ò¾î¾ß¸¸ ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù. ÀÏ´Ü Æ÷ÀÎÅ͸¦ ¾òÀ¸¸é ¸â¹ö´Â ÀÚÀ¯·Ó°Ô ÀÐÀ» ¼ö ÀÖ´Ù. ½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù.
¸î°¡Áö °£´ÜÇÑ Á¤º¸µéÀ» Á¶»çÇØ º¸¾Ò´Âµ¥ °á°ú¸¦ º¸´Ù½ÃÇÇ °íÀ¯ µ¥ÀÌÅÍ°¡ 560¹ÙÀÌÆ®³ª µÈ´Ù. ÀÌ µ¥ÀÌÅÍÀÇ Æ÷¸ËÀ̳ª Á¤ÀÇ¿¡ ´ëÇؼ´Â Á¦Á¶ ¾÷ü°¡ Á¦°øÇÏ´Â ¸Å´º¾óÀ» ÂüÁ¶ÇØ¾ß ¾Ë ¼ö Àִµ¥ ±¸Á¶Ã¼ Çü½ÄÀ¸·Î µÇ¾î ÀÖÀ» °ÍÀÌ´Ù. PrintDlg ÇÔ¼ö´Â »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ ÇÁ¸°ÅÍÀÇ ÃʱâÈ Á¤º¸¸¦ Á¶»çÇÏ¿© ±× Å©±â¸¸Å ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ¿© ÇÚµéÀ» hDevMode¸â¹ö¿¡ ´ëÀÔÇØ ÁØ´Ù. µû¶ó¼ ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÑ ÈÄ ÀμⰡ ¿Ï·áµÇ¸é hDevMode¸¦ ÇØÁ¦ÇØ ÁÖ¾î¾ß Çϴµ¥ °°Àº ÀÌÀ¯·Î hDevNamesµµ °°ÀÌ ÇØÁ¦ÇØ ÁÖ¾î¾ß ÇÑ´Ù.
DEVMODE¸¦ ±¸ÇÏ´Â µÎ¹ø° ¹æ¹ýÀº Àμ⠴ëÈ»óÀÚ¸¦ ÅëÇÏÁö ¾Ê°í °ð¹Ù·Î ±âº» ÇÁ¸°Å͸¦ Á¶»çÇßÀ» ¶§ÀÌ´Ù. À̶§´Â PRINTDLG ±¸Á¶Ã¼¸¦ ÂüÁ¶ÇÒ ¼ö ¾øÀ¸¹Ç·Î Á÷Á¢ ÀÌ ±¸Á¶Ã¼¸¦ ±¸ÇØ¾ß ÇÑ´Ù. ÇÁ¸°ÅÍ À̸§ ¶Ç´Â ÇÚµé·ÎºÎÅÍ ÀÌ ±¸Á¶Ã¼¸¦ ±¸ÇÏ´Â ÇÔ¼ö°¡ ¸î°¡Áö Àִµ¥ ´ÙÀ½ ÇÔ¼ö°¡ °¡Àå ÀϹÝÀûÀÌ´Ù.
LONG DocumentProperties(HWND hWnd, HANDLE hPrinter, LPTSTR pDeviceName, PDEVMODE pDevModeOutput, PDEVMODE pDevModeInput, DWORD fMode);
ÀÌ ÇÔ¼ö´Â DEVMODE¸¦ Á¶»çÇÒ ¼öµµ ÀÖ°í º¯°æÇÒ ¼öµµ Àֱ⠶§¹®¿¡ ¼³Á¤ Á¤º¸¸¦ ¹Ù²Ü ¶§ ¾ÆÁÖ Æí¸®ÇÏ´Ù. ÀÌ ÇÔ¼öÀÇ ¸¶Áö¸· ÀμöÀÎ fMode¿¡ DM_IN_PROMPT Ç÷¡±×°¡ ÁöÁ¤µÇ¸é ÇÁ¸°ÅÍ ¼³Á¤ ´ëÈ»óÀÚ¸¦ º¸¿©Áִµ¥ ÀÌ ´ëÈ»óÀÚ¸¦ À§ÇØ ºÎ¸ð À©µµ¿ì ÇÚµé°ú ´ëÈ»óÀÚÀÇ Ä¸¼ÇÀÌ ÇÊ¿äÇÏ´Ù. ù¹ø° Àμö¿Í ¼¼¹ø° Àμö°¡ °¢°¢ ºÎ¸ð À©µµ¿ìÀÇ ÇÚµé°ú ´ëÈ»óÀÚÀÇ Ä¸¼ÇÀÌ¸ç µÎ¹ø° Àμö°¡ Á¶»ç´ë»ó ÇÁ¸°ÅÍÀÇ ÇÚµéÀÌ´Ù.
³×¹ø° Àμö¿Í ´Ù¼¸¹ø° Àμö°¡ DEVMODE ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅÍÀε¥ °¢°¢ Ãâ·Â¿ë, ÀԷ¿ëÀÌ´Ù. ÇÁ¸°ÅͷκÎÅÍ Á¤º¸¸¦ Á¶»çÇÏ°íÀÚ ÇÒ ¶§´Â ³×¹ø°ÀÇ Ãâ·Â¿ë Àμö¸¦ Àü´ÞÇÏ°í Á¤º¸¸¦ º¯°æÇÒ ¶§´Â ´Ù¼¸¹ø°ÀÇ ÀԷ¿ë Àμö¸¦ Àü´ÞÇÏ¸é µÈ´Ù. ¸¶Áö¸· Àμö fMode´Â ÀÌ ÇÔ¼ö°¡ ¾î¶² µ¿ÀÛÀ» ÇÒÁö¸¦ °áÁ¤Çϴµ¥ ¸¸¾à ÀÌ °ªÀÌ 0À̸é ÀÌ ÇÔ¼ö´Â DEVMODE¸¦ Á¶»ç, ¼³Á¤ÇÏ´Â ´ë½Å DEVMODE ±¸Á¶Ã¼ÀÇ Å©±â¸¦ Á¶»çÇØ ÁØ´Ù.
¸ðµå |
¼³¸í |
DM_IN_BUFFER |
pDevModeInputÀ¸·Î Àü´ÞµÈ DEVMODE·Î ÇÁ¸°ÅÍÀÇ ¼³Á¤ »óŸ¦ º¯°æÇÑ´Ù. À̶§ ¾î¶² Á¤º¸°¡ º¯°æµÉ °ÍÀΰ¡´Â dmFields°ª¿¡ ÁöÁ¤µÈ Ç÷¡±×¸¦ µû¸¥´Ù. |
DM_IN_PROMPT |
ÇÁ¸°ÅÍ ¼³Á¤ ´ëÈ»óÀÚ¸¦ º¸¿©ÁÖ°í ÀÌ ´ëÈ»óÀÚ¿¡¼ »ç¿ëÀÚ°¡ ¼³Á¤ÇÑ Á¤º¸´ë·Î ÇÁ¸°ÅÍ ¼³Á¤À» º¯°æÇÑ´Ù. |
DM_OUT_BUFFER |
ÇÁ¸°ÅÍÀÇ ¼³Á¤ »óŸ¦ Á¶»çÇÏ¿© pDevModeOutput ±¸Á¶Ã¼·Î º¹»çÇÑ´Ù. |
ÀÌ ¿¹Á¦¿¡¼´Â ÇÁ¸°ÅÍÀÇ ¼³Á¤ »óŸ¦ º¯°æÇÏÁö´Â ¾Ê°í Á¶»çÇϱ⸸ Çϴµ¥ ´ÙÀ½ ¼¼ ÁÙ·Î ÀÌ ÀÛ¾÷À» ¼öÇàÇÑ´Ù.
ret=DocumentProperties(hWndMain, hPrinter, szPrinter, NULL, NULL, 0);
dm=(DEVMODE *)malloc(ret);
DocumentProperties(hWndMain, hPrinter, szPrinter, dm, NULL, DM_OUT_BUFFER);
¸ÕÀú fMode¸¦ 0À¸·Î Àü´ÞÇÏ¿© DEVMODE±¸Á¶Ã¼ÀÇ Å©±â¸¦ Á¶»çÇÑ´Ù. ÀÌ ±¸Á¶Ã¼¿¡´Â ÇÁ¸°ÅÍÀÇ °íÀ¯ Á¤º¸°¡ Æ÷ÇԵǹǷΠ¹Ì¸® DEVMODEÀÇ Å©±â¸¦ ¾Ë ¼ö ¾ø±â ¶§¹®¿¡ ÀÌ·± ½ÄÀ¸·Î Å©±â¸¦ ¸ÕÀú Á¶»çÇØ¾ß ÇÑ´Ù. ±×¸®°í Á¶»çµÈ Å©±â¸¸Å ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ°í ´Ù½Ã Çѹø ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÏ¿´´Ù. fMode¿¡ DM_OUT_BUFFER¸¦ Àü´ÞÇÏ¿© Á¤º¸¸¦ Á¶»çÇϱ⸸ ÇϹǷΠ³×¹ø° pDevModeOutputÀμö¸¸ Àü´ÞÇÏ¸é µÇ¸ç ´Ù¼¸¹ø° ÀԷ¿ë Àμö´Â NULL·Î Á־ »ó°ü¾ø´Ù. ÀÌÁ¦ dm¿¡´Â Á¶»çµÈ ¼³Á¤ Á¤º¸°¡ º¹»çµÇ¾úÀ¸¸ç ÀÌ ±¸Á¶Ã¼°ª Áß °ü½ÉÀÖ´Â °ªÀ» º¸¸é µÈ´Ù. Ãâ·Â °á°ú´Â ¾Õ¿¡¼ º¸ÀÎ °á°ú¿Í µ¿ÀÏÇÏ´Ù.