ÄÁÆ®·ÑÀÇ Àμâ Áö¿ø, ÀÎ¼â ¿É¼Ç °ü¸® Äڵ尡 ¿Ï¼ºµÇ¾ú´Ù. ÀÌÁ¦ È£½ºÆ®´Â »ç¿ëÀÚÀÇ ¸í·ÉÀÌ ÀÖÀ» ¶§ ÁÖ¾îÁø ¿É¼Ç´ë·Î ÀμâÇÏ¸é µÈ´Ù. Àμâ´Â 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 ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.