¶ó.ÃʱâÈ­ Á¤º¸

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¿¡´Â Á¶»çµÈ ¼³Á¤ Á¤º¸°¡ º¹»çµÇ¾úÀ¸¸ç ÀÌ ±¸Á¶Ã¼°ª Áß °ü½ÉÀÖ´Â °ªÀ» º¸¸é µÈ´Ù. Ãâ·Â °á°ú´Â ¾Õ¿¡¼­ º¸ÀÎ °á°ú¿Í µ¿ÀÏÇÏ´Ù.