³ª. Àμ⠴ëÈ­»óÀÚ

ÄÁÆ®·ÑÀÇ Àμâ Áö¿ø, ÀÎ¼â ¿É¼Ç °ü¸® Äڵ尡 ¿Ï¼ºµÇ¾ú´Ù. ÀÌÁ¦ È£½ºÆ®´Â »ç¿ëÀÚÀÇ ¸í·ÉÀÌ ÀÖÀ» ¶§ ÁÖ¾îÁø ¿É¼Ç´ë·Î ÀμâÇÏ¸é µÈ´Ù. Àμâ´Â Win32 ÇÁ·Î±×·¡¹ÖÀÇ ´Ù¼Ò ±âº»ÀûÀÎ ³»¿ëÀ̹ǷΠ¿©±â¼­´Â Àμ⠹æ¹ý¿¡ ´ëÇØ º°µµ·Î ´Ù·çÁö ¾Ê´Â´Ù. Àμâ Äڵ忡 Àͼ÷ÇÏÁö ¾ÊÀº »ç¶÷Àº API Á¤º¹ 29ÀåÀÇ Àμ⠰ü·Ã ±âº» À̷аú ¿¹Á¦µéÀ» Âü°í Çϱ⠹ٶõ´Ù. Àμ⸦ ½ÃÀÛÇÏ´Â ÇÔ¼ö´Â ¿É¼Ç¿¡ µû¶ó µÎ °¡Áö°¡ ÀÖ´Ù. ´ÙÀ½ ÇÔ¼ö¸¦ ÀÛ¼ºÇÑ´Ù.

 

void Print(HWND hChild)

{

     PRINTDLG pd;

     int nPages, nCopies;

     int nFirst, nFinal;

 

     memset(&pd,0,sizeof(PRINTDLG));

     pd.lStructSize=sizeof(PRINTDLG);

     pd.Flags=PD_RETURNDC | PD_NOSELECTION;

     pd.hwndOwner=g_hFrameWnd;

     pd.nFromPage=1;

     pd.nToPage=1;

     pd.nMinPage=1;

     pd.nMaxPage=65535;

     pd.nCopies=1;

     if (PrintDlg(&pd)==FALSE || pd.hDC==NULL) {

          return;

     }

     if (pd.Flags & PD_COLLATE) {

          nPages=1;

          nCopies=pd.nCopies;

     } else {

          nPages=pd.nCopies;

          nCopies=1;

     }

 

     if (pd.Flags & PD_PAGENUMS) {

          nFirst=pd.nFromPage;

          nFinal=pd.nToPage;

     } else {

          nFirst=pd.nMinPage;

          nFinal=pd.nMaxPage;

     }

 

     PrintDoc(hChild,pd.hDC,nPages,nCopies,nFirst,nFinal);

 

     if (pd.hDevMode) GlobalFree(pd.hDevMode);

     if (pd.hDevNames) GlobalFree(pd.hDevNames);

     DeleteDC(pd.hDC);

}

 

void PrintDirect(HWND hChild)

{

     HDC pdc;

 

     TCHAR szPrinter[80];

     TCHAR *szDevice, *szDriver, *szOutput;

     GetProfileString("windows","device",",,,",szPrinter,80);

     szDevice = strtok(szPrinter,",");

     szDriver = strtok(NULL, ", ");

     szOutput = strtok(NULL, ", ");

     pdc=CreateDC(szDriver,szDevice,szOutput,NULL);

     if (pdc) {

          PrintDoc(hChild,pdc,1,1,1,65535);

     }

     DeleteDC(pdc);

}

 

µÎ ÇÔ¼ö Áß ¾î¶² ÇÔ¼ö°¡ Àμ⸦ ½ÃÀÛÇÒ °ÍÀΰ¡´Â Option.prtbDirect ¿É¼Ç¿¡ µû¶ó ´Þ¶óÁø´Ù. OnCommand¿¡¼­ ÀÌ ¿É¼Ç°ª¿¡ µû¶ó ÀûÀýÇÑ Àμ⠽ÃÀÛ ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.

 

void OnCommand(HWND hWnd,WPARAM wParam,LPARAM lParam)

{

     ....

     case IDM_FILE_PRINT:

          if (Option.prtbDirect) {

              PrintDirect(hActive);

          } else {

              Print(hActive);

          }

          break;

 

Print ÇÔ¼ö´Â Àμ⠴ëÈ­»óÀÚ¸¦ º¸¿©ÁÖ°í ÇÁ¸°Å͸¦ º¯°æÇϰųª Àμ⠹üÀ§, ¸Å¼ö¸¦ ¼±ÅÃÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ¹Ý¸é PrintDirect ÇÔ¼ö´Â Àμ⠴ëÈ­»óÀÚ¸¦ º¸¿©ÁÖÁö ¾Ê°í ½Ã½ºÅÛ¿¡ µî·ÏµÈ ±âº» ÇÁ¸°ÅÍ·Î ¹Ù·Î ÀμâÇÑ´Ù. Àμ⠸żö´Â 1¸Å·Î °íÁ¤µÇ¸ç Àμ⠹üÀ§´Â ¹®¼­ ÀüüÀÌ´Ù. ±âº» ÇÁ¸°ÅÍ¿¡ ±âº» ¿É¼ÇÀ¸·Î ÀμâÇÏ·Á¸é Á÷Á¢ Àμ⠿ɼÇÀ» ¼±ÅÃÇÏ´Â °ÍÀÌ ÁÁ°í ÀμâÇÒ ¶§¸¶´Ù ÇÁ¸°Å͸¦ ¹Ù²Ù°Å³ª Àμ⠹üÀ§¸¦ ÁöÁ¤ÇÏ·Á¸é Á÷Á¢ Àμ⸦ ÇÏÁö ¸»¾Æ¾ß ÇÑ´Ù.

µÎ ÇÔ¼ö´Â Àμ⿡ »ç¿ëÇÒ DC¿Í Àμ⠹üÀ§, ¸Å¼ö¸¦ ±¸ÇÑ´Ù´Â Á¡¿¡¼­ µ¿ÀÏÇ쵂 Àμ⠴ëÈ­»óÀÚ·Î »ç¿ëÀÚ¿¡°Ô ¼±ÅñÇÀ» Áִ°¡ ¾Æ´Ï¸é µðÆúÆ®¸¦ ÃëÇϴ°¡¸¸ ´Ù¸£´Ù. µÎ ÇÔ¼ö ¸ðµÎ Àμ⿡ ÇÊ¿äÇÑ Á¤º¸¸¸ ±¸ÇÏ°í PrintDoc ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.