DEVMODE¶ó´Â ¾ÆÁÖ º¹ÀâÇÑ ±¸Á¶Ã¼¿¡ ´ëÇØ ¾Ë¾Æ º¸¾Ò´Âµ¥ ÀÌ ±¸Á¶Ã¼¸¦ ¾Ë¸é Àμ⠹æ½ÄÀ» ÇÁ·Î±×·¥ÀÌ Á÷Á¢ º¯°æÇÒ ¼ö ÀÖ´Ù. À©µµ¿ìÁî¿¡¼ ¿øÄ¢ÀûÀÎ Àμ⠰úÁ¤Àº ´ÙÀ½°ú °°´Ù. »ç¿ëÀÚ°¡ Àμâ¸í·ÉÀ» ³»¸®¸é ÇÁ·Î±×·¥Àº Àμ⠴ëÈ»óÀÚ¸¦ º¸¿©ÁØ´Ù. ±×¸®°í ÀÌ ´ëÈ»óÀÚ¿¡¼ ¿øÇÏ´Â ÇÁ¸°Å͸¦ ¼±ÅÃÇÏ°í ¿É¼ÇÀ» Á¶Á¤ÇÑ ÈÄ È®ÀÎ ¹öÆ°À» ´©¸¦ °ÍÀÌ´Ù. ÇÁ·Î±×·¥Àº »ç¿ëÀÚÀÇ ¸í·ÉÀÌ ¶³¾îÁ³À» ¶§ »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ ¿É¼Ç´ë·Î Àμ⹰À» ¸¸µé¾î ³»¾ß ÇÑ´Ù. »ç¿ëÀÚ°¡ AÇÁ¸°Å͸¦ ¼±ÅÃÇß´Ù¸é Àμ⹰Àº Ʋ¸²¾øÀÌ AÇÁ¸°ÅÍ·Î º¸³»¾ß Çϸç A4¿ëÁö¸¦ ¼±ÅÃÇß´Ù¸é ÀÌ ¿ëÁö¿¡ ¸Â°Ô Àμ⸦ ÇÒ °ÍÀÌ°í 2Àå ÀμâÇ϶ó°í Çß´Ù¸é 2ÀåÀ» ÀμâÇØ¾ß ÇÑ´Ù.
ÀÌ °úÁ¤Àº ³Ê¹« ³Ê¹« ´ç¿¬Çϸç ÀüÇô ÀÌ»óÇØ º¸ÀÌÁö ¾Ê´Â´Ù. Àμ⠿ɼǿ¡ ´ëÇÑ ¸ðµç ¼±Åñǰú Ã¥ÀÓÀÌ »ç¿ëÀÚ¿¡°Ô ÀÖ´Â °ÍÀÌ´Ù. »ç½Ç ¸ðµç Àμ⠰úÁ¤ÀÌ ÀÌ ¿øÄ¢´ë·Î¸¸ µÈ´Ù¸é DEVMODE µûÀ§´Â ¸ô¶óµµ »ó°ü¾øÀ» °ÍÀ̳ª ½ÇÁ¦·Î´Â ÀÌ·± ÀÚ¿¬½º·¯¿î ¹æ¹ýÀ» »ç¿ëÇÒ ¼ö ¾ø´Â °æ¿ì°¡ ÀÖ´Ù. ¾î¶² °æ¿ì°¡ ±×·±Áö ¿¹¸¦ µé¾î º¸µµ·Ï ÇÏÀÚ.
¨ç ¹Ýµå½Ã ƯÁ¤ÇÑ ¿ëÁö¿¡¸¸ Âï¾î¾ß ÇÑ´Ù. Àμ⹰ÀÌ ¿ö³« Ä¿¼ B5 µûÀ§¿¡´Â µµÀúÈ÷ ÂïÀ» ¼ö°¡ ¾ø´Ù°Å³ª ³¹ÀåÀ¸·Î ÀμⰡ ºÒ°¡´ÉÇÑ °æ¿ìÀε¥ ÀÌ·± °æ¿ì´Â »ç¿ëÀÚÀÇ ¿ëÁö ¼±ÅÃÀ» ¹«½ÃÇÏ°í °Á¦·Î ¿ëÁö¸¦ ¹Ù²ã ÁÖ¾î¾ß ÇÑ´Ù.
¨è Àμ⹰ÀÇ ³»¿ë¿¡ µû¶ó ¿ëÁö ¹æÇâÀ» º¯°æÇØ¾ß ÇÑ´Ù. »ç¿ëÀÚ°¡ Àμ⹰À» Á÷Á¢ º¸°í ¿ëÁö¸¦ °áÁ¤ÇÒ ¼öµµ ÀÖÁö¸¸ ÀÌ·¸°Ô µÇ¸é ¹ø°Å·Î¿ì¹Ç·Î ÇÁ·Î±×·¥ÀÌ ¾Ë¾Æ¼ ¿ëÁö ¹æÇâÀ» ÀûÀýÇÏ°Ô ¹Ù²ã ÁÖµµ·Ï ÇÏ°í ½Í´Ù. ±×·¡ÇÈ ÇÁ·Î±×·¥ÀÇ °æ¿ì ¡°ÆäÀÌÁö¿¡ ²Ë Â÷°Ô Ãâ·Â¡± µûÀ§ÀÇ ¿É¼ÇÀ» Á¦°øÇÏ´Â ÀÌ ¿É¼Ç´ë·Î¶ó¸é 1024*768ÀÇ ±×·¡ÇÈ ÆÄÀÏÀº °¡·Î·Î Âï¾î ÁÖ¾î¾ß ÇÑ´Ù.
¨é ±ØµµÀÇ Ãʺ¸ÀÚµéÀ» ´ë»óÀ¸·Î ÇÏ´Â °æ¿ì¸¦ µé ¼ö ÀÖ´Ù. ¾Æµ¿¿ë ¼ÒÇÁÆ®¿þ¾î³ª ³ªÀ̵å½Å ¾î¸£½ÅÀÌ »ç¿ëÇÏ´Â ¼ÒÇÁÆ®¿þ¾î´Â Àμ⠴ëÈ»óÀÚÁ¶Â÷µµ ºÎ´ã½º·´´Ù. »ç¿ëÀÚÀÇ ÇÕ¸®ÀûÀÎ ¼³Á¤ º¯°æÀ» ±â´ëÇÒ ¼ö ¾øÀ¸¹Ç·Î ÇÁ·Î±×·¥Àº ¿À·ÎÁö Àμ⠸í·É¸¸ ¹Þ¾Æ °¡Àå ÃÖÀûÀÇ °á°ú¸¦ ³¾ ¼ö ÀÖµµ·Ï ¸ðµç ¼³Á¤À» ¾Ë¾Æ¼ ¹Ù²ã ÁÖ¾î¾ß ÇÒ¸¸Å ¶È¶ÈÇØ¾ß ÇÑ´Ù.
¨ê ¿©·¯ °¡Áö ÀÌÀ¯·Î ÇÁ¸°ÅÍÀÇ Æ¯Á¤ ±â´ÉÀ» ÅëÁ¦ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. Ä÷¯ Àμ⸦ ¸øÇϵµ·Ï ÇѴٰųª Æ®·çŸÀÔ Àμ⠹æ½ÄÀ» ¹Ù²Û´Ù°Å³ª Àμâ Ç°ÁúÀ» Á¦ÇÑÇÏ´Â µîÀÇ ¿¹¸¦ µé ¼ö Àִµ¥ °ø¿ëÀ¸·Î »ç¿ëÇÏ´Â ÇÁ¸°ÅͶó¸é ÀÌ·± ±â´ÉÀÌ ÇÊ¿äÇÒ ¼öµµ ÀÖ´Ù.
¾ÆÁÖ Æ¯¼öÇÑ °æ¿ìÀÇ ¿¹¸¦ µç °Í °°Áö¸¸ »ç½Ç ÀÌ·± °æ¿ì´Â »ý°¢º¸´Ù ºó¹øÇÏ´Ù. ¿©±â¼´Â °¡Àå ÈçÇÑ °æ¿ìÀÎ ¿ëÁö ¹æÇâÀ» ¹Ù²ãÁÖ´Â ¿¹¸¦ µé¾î º¸µµ·Ï ÇÏ°í Àμ⠸żö¸¦ ÇÁ·Î±×·¥ÀÌ ÅëÁ¦Çϵµ·Ï ÇØ º¸ÀÚ. ÀÌ ¿¹Á¦¸¦ À§ÇÑ ¿©·¯ ÀÌ·ÐÀº ÀÌ¹Ì ¾Õ¿¡¼ ¸¹ÀÌ °øºÎ¸¦ ÇßÀ¸¹Ç·Î ¿¹Á¦¸¸ º¸¿© Á־ ÀÌÁ¦ ÀÌÇØ°¡ µÉ °ÍÀÌ´Ù. ¿¹Á¦´Â Àμ⠴ëÈ»óÀÚ¸¦ »ç¿ëÇÏ´Â °æ¿ì¿Í ±âº» ÇÁ¸°Å͸¦ »ç¿ëÇÏ´Â °æ¿ì¿¡ ´ëÇØ µÎ °¡Áö¸¦ ÀÛ¼ºÇÏ¿´´Ù. ´ÙÀ½ ¿¹Á¦´Â Àμ⠴ëÈ»óÀÚ¸¦ »ç¿ëÇÏ´Â ¹öÀüÀÌ´Ù.
void Print(int Orient)
{
PRINTDLG pd;
HDC hPrtdc;
DEVMODE *dm;
int xpage, ypage;
int dpiX, dpiY;
HPEN hPen, OldPen;
HFONT MyFont, OldFont;
DOCINFO doc;
int Result;
char str[]="ÇÁ¸°ÅÍ Å×½ºÆ®";
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;
pd.hDevMode=GlobalAlloc(GHND,sizeof(DEVMODE));
dm=(DEVMODE *)GlobalLock(pd.hDevMode);
dm->dmSize=sizeof(DEVMODE);
dm->dmFields=DM_ORIENTATION;
dm->dmOrientation=Orient;
GlobalUnlock(pd.hDevMode);
PrintDlg(&pd);
hPrtdc=pd.hDC;
if (hPrtdc == NULL)
return;
// Àμâ ÀÛ¾÷À» ½ÃÀÛÇÑ´Ù.
doc.cbSize=sizeof(DOCINFO);
doc.lpszDocName="Test Document";
doc.lpszOutput=NULL;
doc.lpszDatatype=NULL;
doc.fwType=0;
Result=StartDoc(hPrtdc, &doc);
if (Result <= 0) goto end;
Result=StartPage(hPrtdc);
if (Result <= 0) goto end;
// ÇÁ¸°ÅÍÀÇ Çػ󵵸¦ ±¸ÇÑ´Ù.
dpiX = GetDeviceCaps(hPrtdc, LOGPIXELSX);
dpiY = GetDeviceCaps(hPrtdc, LOGPIXELSY);
xpage = GetDeviceCaps(hPrtdc, HORZRES);
ypage = GetDeviceCaps(hPrtdc, VERTRES);
// »ç°ÝÇüÀ» ±×¸°´Ù.
hPen=CreatePen(PS_SOLID,dpiY/10,RGB(0,0,255));
OldPen=(HPEN)SelectObject(hPrtdc,hPen);
Rectangle(hPrtdc,200,200,xpage-200,ypage-200);
DeleteObject(SelectObject(hPrtdc,OldPen));
// 1ÀÎÄ¡=1/72Æ÷ÀÎÆ®. ±×·¯¹Ç·Î nÆ÷ÀÎÆ® Å©±â=n*1/72*dpi°¡ µÈ´Ù.
MyFont=CreateFont(50*dpiY/72,0,0,0,FW_NORMAL, FALSE, FALSE, FALSE,
HANGEUL_CHARSET, 3,2,1,VARIABLE_PITCH | FF_ROMAN, "±Ã¼");
OldFont=(HFONT)SelectObject(hPrtdc, MyFont);
SetTextAlign(hPrtdc,TA_CENTER);
TextOut(hPrtdc,xpage/2,ypage/2,str,strlen(str));
SelectObject(hPrtdc, OldFont);
DeleteObject(MyFont);
// Ãâ·ÂÀ» Á¾·áÇÑ´Ù.
Result=EndPage(hPrtdc);
if (Result <= 0) goto end;
// Àμâ ÀÛ¾÷À» ³¡³½´Ù.
Result=EndDoc(hPrtdc);
end:
if (pd.hDevMode)
GlobalFree(pd.hDevMode);
if (pd.hDevNames)
GlobalFree(pd.hDevNames);
DeleteDC(hPrtdc);
SetCursor(LoadCursor(NULL,IDC_ARROW));
return;
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
char Mes[]="¿ÞÂÊ = ¼¼·Î Âï±â, ¿À¸¥ÂÊ = °¡·ÎÂï±â";
switch(iMessage) {
case WM_LBUTTONDOWN:
Print(DMORIENT_PORTRAIT);
return 0;
case WM_RBUTTONDOWN:
Print(DMORIENT_LANDSCAPE);
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));
}
Print ÇÔ¼ö´Â ¿ëÁö¿¡ °¡µæÂ÷°Ô »ç°¢ÇüÀ» ±×¸®°í ¿ëÁö Áß¾Ó¿¡ 50Æ÷ÀÎÆ® Å©±â·Î ¹®ÀÚ¿À» Ãâ·ÂÇÑ´Ù. À̶§ ¿ëÁöÀÇ ¹æÇâÀº Á¦¾îÆÇ¿¡¼ ¼³Á¤ÇÑ °ÍÀ» ¹«½ÃÇÏ°í ÀÌ ÇÔ¼öÀÇ Àμö·Î Àü´ÞµÈ Orient ¹æÇâÀ» µû¸£µµ·Ï µÇ¾î Àִµ¥ WndProc¿¡¼´Â ÁÂ¿ì ¸¶¿ì½º ¹öÆ°¿¡ ´ëÇØ °¢°¢ DMORIENT_PORTRAIT ¹æÇâ°ú DMORIENT_LANDSCAPE ¹æÇâÀ¸·Î ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.
PrintDlg ÇÔ¼ö¸¦ È£ÃâÇϱâ Àü¿¡ hDevMode¿¡ ¿øÇÏ´Â ÃʱⰪÀ» ´ëÀÔÇØ ÁÖ¸é ´ëÈ»óÀÚ´Â ÀÌ ÃʱⰪ´ë·Î ¼³Á¤µÈ´Ù. hDevMode°¡ ¸Þ¸ð¸®¿¡ ´ëÇÑ ÇÚµéÀ̹ǷΠGlobalAllocÀ¸·Î ¸Þ¸ð¸®¸¦ ÇÒ´çÇ쵂 ¸¸¾à ÇÁ¸°ÅÍÀÇ °íÀ¯ Á¤º¸¿¡ ´ëÇÑ ÃʱⰪµµ º¯°æÇÏ°í ½Í´Ù¸é DEVMODE±¸Á¶Ã¼ÀÇ Å©±âº¸´Ù ´õ Å« ¸Þ¸ð¸®¸¦ ÇÒ´çÇÒ ¼öµµ ÀÖ´Ù. GlobalLockÀ¸·Î ¸Þ¸ð¸®ÀÇ Æ÷ÀÎÅ͸¦ ¹ÞÀº ÈÄ ¿øÇÏ´Â ÃʱⰪÀ» ¼³Á¤ÇÑ´Ù. ¿¹Á¦¿¡¼´Â ¿ëÁöÀÇ ¹æÇ⸸ º¯°æÇÏ¿´À¸¸ç dmFields¿¡ DM_ORIENTATION Ç÷¡±×¸¸ ÁÖ¾ú´Âµ¥ ´Ù¸¥ ¼³Á¤°ªµµ ¾ó¸¶µçÁö º¯°æÇÒ ¼ö ÀÖ´Ù. hDevMode ¸Þ¸ð¸® Çڵ鿡 ÃʱⰪÀ» ¼³Á¤ÇÑ ÈÄ PrintDlg ÇÔ¼ö¸¦ È£ÃâÇϸé ÃʱⰪÀÌ Àû¿ëµÈ ´ëÈ»óÀÚ°¡ ¿¸± °ÍÀÌ´Ù. ´ÙÀ½Àº °¢°¢ ¸¶¿ì½º ¿ÞÂÊ, ¿À¸¥ÂÊ ¹öÆ°À» ´·¶À» ¶§ ¿¸®´Â Àμ⠴ëÈ»óÀÚÀÇ ¸ð¾çÀÌ´Ù.
Àμ⠴ëÈ»óÀÚÀÇ ¿ëÁö ¹æÇâÀÌ ÇÁ·Î±×·¥ÀÌ ¼³Á¤ÇÑ´ë·Î ÃʱâȵǾî ÀÖ´Ù. ¹°·Ð ÀÌ ÃʱⰪÀº ¾îµð±îÁö³ª ÃʱⰪÀÏ »ÓÀ̹ǷΠ»ç¿ëÀÚ°¡ ¹«½ÃÇÏ°í »õ·Î¿î °ªÀ¸·Î º¯°æÇÒ ¼ö´Â ÀÖÁö¸¸ ÀûÀýÇÑ ¿ëÁö ¹æÇâÀ» ÇÁ·Î±×·¥ÀÌ ÀÚµ¿À¸·Î ¸ÂÃç ÁÜÀ¸·Î½á »ç¿ëÀÚ°¡ ÇÒ ÀÏÀ» ´ë½Å ÇØ Áشٴ Àǹ̰¡ ÀÖ´Ù. Áï PrintDlg ÇÔ¼ö¸¦ È£ÃâÇϱâ Àü¿¡ DEVMODE¸¦ º¯°æÇÏ´Â °ÍÀº »ç¿ëÀÚ¿¡°Ô ¿É¼ÇÀ» ±ÇÀåÇÏ´Â °ÍÀÏ »ÓÀÌÁö °Á¦ÇÏ´Â °ÍÀº ¾Æ´Ï´Ù. ¸¸¾à Àμ⠴ëÈ»óÀÚ¿¡¼ »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ ¿É¼ÇÀ» ¹«½ÃÇÏ°í ´Ù½Ã Çѹø °Á¦·Î ¿É¼ÇÀ» ¹Ù²Ù°íÀÚ ÇÑ´Ù¸é ´ëÈ»óÀÚ°¡ ´ÝÈù ÈÄ¿¡ DEVMODE¸¦ ¶Ç º¯°æÇÏ¸é µÈ´Ù.
PrintDlg(&pd);
hPrtdc=pd.hDC;
if (hPrtdc == NULL)
return;
// ´ëÈ»óÀÚ¸¦ ´ÝÀº ÈÄ¿¡ °Á¦·Î ¿ëÁö ¹æÇâÀ» º¯°æÇÑ´Ù.
dm=(DEVMODE *)GlobalLock(pd.hDevMode);
dm->dmFields=DM_ORIENTATION;
dm->dmOrientation=Orient;
ResetDC(hPrtdc,dm);
GlobalUnlock(pd.hDevMode);
DEVMODE ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅ͸¦ ¾òÀº ÈÄ ´Ù½Ã ÀÌ ±¸Á¶Ã¼ÀÇ ³»¿ëÀ» º¯°æÇÏ¿´´Ù. ±×¸®°í ÀÌ º¯°æ»çÇ×À» ÀåÄ¡¿¡ Àû¿ëÇϱâ À§ÇØ ResetDC ÇÔ¼ö¸¦ ºÒ·¯ ÁØ´Ù. ResetDC ÇÔ¼ö´Â ÀÌ¹Ì »ý¼ºµÈ DCÀÇ ¼³Á¤ Á¤º¸¸¦ Àç¼³Á¤Çϴµ¥ ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇϸé ÀμâÁß¿¡µµ ¿ëÁöÀÇ Á¾·ù³ª ¹æÇâÀ» º¯°æÇÒ ¼ö ÀÖÀ¸³ª ´Ü ÀåÄ¡ÀÇ À̸§À̳ª Æ÷Æ® µûÀ§¸¦ º¯°æÇÏ´Â °ÍÀº ºÒ°¡´ÉÇÏ´Ù.
´ÙÀ½Àº Àμ⠴ëÈ»óÀÚ¸¦ º¸¿©ÁÖÁö ¾Ê°í ±âº» ÇÁ¸°ÅÍ¿¡ ´ëÇØ ¿ëÁö ¹æÇâ°ú Àμ⠸żö¸¦ ÇѲ¨¹ø¿¡ º¯°æÇϵµ·Ï ÃʱⰪÀ» ¼³Á¤ÇØ º¸ÀÚ. Àμ⹰ÀÇ ¼º°Ý¿¡ µû¶ó ÇÁ·Î±×·¥ÀÌ ÀÚµ¿À¸·Î ÃʱⰪÀ» °áÁ¤ÇÏ°íÀÚ ÇÒ ¶§ ÀÌ ¹æ¹ýÀ» »ç¿ëÇϴµ¥ Á¦¾îÆÇ¿¡¼ ¼³Á¤ÇÑ ¿ëÁö ¹æÇâÀ» ¹«½ÃÇÏ°í ÃʱⰪÀ» º¯°æÇÒ ¼ö ÀÖ´Ù. ¼Ò½º´Â ´ÙÀ½°ú °°´Ù.
void Print(int Orient, int nCopy)
{
HDC hPrtdc;
int xpage, ypage;
int dpiX, dpiY;
HPEN hPen, OldPen;
HFONT MyFont, OldFont;
DOCINFO doc;
int Result;
char str[]="ÇÁ¸°ÅÍ Å×½ºÆ®";
char szPrinter[128];
DWORD dwPrinter=128;
HANDLE hPrinter;
DEVMODE *dmo;
SetCursor(LoadCursor(NULL,IDC_WAIT));
// ±âº» ÇÁ¸°ÅÍÀÇ ¼³Á¤À» Á¶»çÇÑ´Ù. ¹æÇâ Çʵ常 Àç¼³Á¤ÇÑ´Ù.
if (MyGetDefaultPrinter(szPrinter) == FALSE)
return;
OpenPrinter(szPrinter,&hPrinter,NULL);
Result=DocumentProperties(hWndMain, hPrinter, szPrinter, NULL, NULL, 0);
dmo=(DEVMODE *)malloc(Result);
DocumentProperties(hWndMain, hPrinter, szPrinter, dmo, NULL, DM_OUT_BUFFER);
dmo->dmFields=DM_ORIENTATION | DM_COPIES;
dmo->dmOrientation = Orient;
dmo->dmCopies = nCopy;
DocumentProperties(hWndMain, hPrinter, szPrinter, dmo, dmo, DM_OUT_BUFFER | DM_IN_BUFFER);
hPrtdc=CreateDC(NULL,szPrinter,NULL,dmo);
if (hPrtdc==NULL)
goto end;
// Àμâ ÀÛ¾÷À» ½ÃÀÛÇÑ´Ù.
doc.cbSize=sizeof(DOCINFO);
doc.lpszDocName="Test Document";
doc.lpszOutput=NULL;
doc.lpszDatatype=NULL;
doc.fwType=0;
Result=StartDoc(hPrtdc, &doc);
if (Result <= 0) goto end;
Result=StartPage(hPrtdc);
if (Result <= 0) goto end;
// ÇÁ¸°ÅÍÀÇ Çػ󵵸¦ ±¸ÇÑ´Ù.
dpiX = GetDeviceCaps(hPrtdc, LOGPIXELSX);
dpiY = GetDeviceCaps(hPrtdc, LOGPIXELSY);
xpage = GetDeviceCaps(hPrtdc, HORZRES);
ypage = GetDeviceCaps(hPrtdc, VERTRES);
// »ç°ÝÇüÀ» ±×¸°´Ù.
hPen=CreatePen(PS_SOLID,dpiY/10,RGB(0,0,255));
OldPen=(HPEN)SelectObject(hPrtdc,hPen);
Rectangle(hPrtdc,200,200,xpage-200,ypage-200);
DeleteObject(SelectObject(hPrtdc,OldPen));
// 1ÀÎÄ¡=1/72Æ÷ÀÎÆ®. ±×·¯¹Ç·Î nÆ÷ÀÎÆ® Å©±â=n*1/72*dpi°¡ µÈ´Ù.
MyFont=CreateFont(50*dpiY/72,0,0,0,FW_NORMAL, FALSE, FALSE, FALSE,
HANGEUL_CHARSET, 3,2,1,VARIABLE_PITCH | FF_ROMAN, "±Ã¼");
OldFont=(HFONT)SelectObject(hPrtdc, MyFont);
SetTextAlign(hPrtdc,TA_CENTER);
TextOut(hPrtdc,xpage/2,ypage/2,str,strlen(str));
SelectObject(hPrtdc, OldFont);
DeleteObject(MyFont);
// Ãâ·ÂÀ» Á¾·áÇÑ´Ù.
Result=EndPage(hPrtdc);
if (Result <= 0) goto end;
// Àμâ ÀÛ¾÷À» ³¡³½´Ù.
Result=EndDoc(hPrtdc);
end:
free(dmo);
ClosePrinter(hPrinter);
DeleteDC(hPrtdc);
SetCursor(LoadCursor(NULL,IDC_ARROW));
return;
}
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
char Mes[]="¿ÞÂÊ = ¼¼·Î Âï±â, ¿À¸¥ÂÊ = °¡·ÎÂï±â";
switch(iMessage) {
case WM_LBUTTONDOWN:
Print(DMORIENT_PORTRAIT,1);
return 0;
case WM_RBUTTONDOWN:
Print(DMORIENT_LANDSCAPE,2);
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));
}
ÀÌ ¿¹Á¦ÀÇ Print ÇÔ¼ö´Â ¿ëÁöÀÇ ¹æÇâ°ú Àμ⠸żö¸¦ Àü´Þ¹Þ¾Æ ±âº» ÇÁ¸°ÅÍ¿¡ Ãâ·ÂÇÑ´Ù. Àμ⸦ Çϱâ Àü¿¡ ±âº» ÇÁ¸°Å͸¦ ±¸ÇÏ°í ÀÌ ÇÁ¸°ÅÍÀÇ ¼³Á¤À» º¯°æÇϱâ À§ÇØ DocumentProperties ÇÔ¼ö¸¦ ¼¼¹øÀ̳ª È£ÃâÇÑ´Ù. ù¹ø° È£ÃâÀº DEVMODE ±¸Á¶Ã¼ÀÇ Å©±â¸¦ Á¶»çÇϱâ À§ÇؼÀ̸ç ÀÌ È£Ãâ¿¡¼ Á¶»çµÈ Å©±â¸¸Å dmo¿¡ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ¿´´Ù. µÎ¹ø° È£ÃâÀº ÇöÀç ¼³Á¤µÈ DEVMODE¸¦ Á¶»çÇϱâ À§ÇؼÀε¥ ¹«Á¶°Ç ÃʱⰪÀ» º¯°æÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ¼³Á¤µÈ ÃʱⰪÀ» Á¶»çÇÑ ÈÄ ¿øÇÏ´Â ºÎºÐ¸¸ º¯°æÇØ¾ß ÇÑ´Ù. °ªÀ» Á¶»çÇϱâ À§ÇØ dmo¸¦ Ãâ·Â¹öÆÛ·Î Á¦°øÇßÀ¸¸ç Ç÷¡±×´Â DM_OUT_BUFFER·Î ÁÖ¾ú´Ù.
ÀÌ·¸°Ô Á¶»çµÈ ÃʱⰪ dmo¸¦ ÀÌÁ¦ ¿øÇϴ´ë·Î ¼öÁ¤ÇÑ´Ù. dmFileds¿¡ DM_ORIENTATION°ú DM_COPIES Ç÷¡±×¸¦ ÁÖ¾î ¿ëÁöÀÇ ¹æÇâ°ú Àμ⠸żö¸¦ º¯°æÇÒ °ÍÀÓÀ» ¾Ë¸®°í °¢ ¸â¹ö¿¡ °ªÀ» ¼³Á¤ÇÏ¿´´Ù. ¿ëÁöÀÇ ¹æÇâÀº Àμö·Î Àü´ÞµÈ Orient°ªÀ» ´ëÀÔÇÏ¿´°í Àμ⠸żö´Â ¹«Á¶°Ç nCopy¸Å·Î º¯°æÇÑ´Ù. dmo¿¡ ¿øÇÏ´Â ÃʱⰪÀ» ¼³Á¤ÇÑ ÈÄ ¸¶Áö¸·À¸·Î DocumentProperties ÇÔ¼ö¸¦ È£ÃâÇÏ¿© dmo¸¦ ÀԷ°ªÀ¸·Î Àü´ÞÇØ ÁÖ¾ú´Ù. ±×·¯¸é dmo¿¡ ¼³Á¤µÈ ¿ëÁö ¹æÇâ°ú Àμ⠸żö°¡ hPrinter ÇÁ¸°ÅÍ¿¡ ¼³Á¤µÈ´Ù.
ÀÌ ¿¹Á¦´Â ÇÁ¸°Å͸¦ ¼±ÅÃÇÏ´Â ´ëÈ»óÀÚ¸¦ ¶ç¿ìÁö ¾Ê°í ¹«Á¶°Ç ±âº» ÇÁ¸°ÅÍ·Î Ãâ·ÂÀ» º¸³»±â ¶§¹®¿¡ »ç¿ëÀÚ°¡ ÃʱⰪÀ» º¯°æÇÒ ±âȸ°¡ ¾ø´Ù. µû¶ó¼ ¸¶¿ì½º ¹öÆ°À» ´©¸£¸é Áï½Ã Ãâ·Â¹°ÀÌ ÀμâµÇ´Âµ¥ ¼¼·Î ¹æÇâÀº 1ºÎ, °¡·Î ¹æÇâÀº 2ºÎ¸¦ ÀμâÇϵµ·Ï ÇÏ¿´´Ù. ´ÙÀ½Àº ÁÂ¿ì ¸¶¿ì½º ¹öÆ°À» ´·¶À» ¶§ÀÇ Àμ⠰á°úÀÌ´Ù.
ÇÁ·Î±×·¥ÀÌ Àμ⹰ÀÇ ¸ð¾çÀ» ÆǺ°ÇÏ¿© ÀÚµ¿À¸·Î Âï¾îÁÖ°íÀÚ ÇÒ ¶§ °¡Àå ÀûÀýÇÑ ¹æ¹ýÀ̸ç Ãʺ¸ÀÚ¿ë ÇÁ·Î±×·¥À̳ª ¼¹ö¿ë ÇÁ·Î±×·¥¿¡¼ ÀÌ ¹æ¹ýÀ» ¸¹ÀÌ »ç¿ëÇÑ´Ù. DEVMODEÀÇ ¸ðµç ¸â¹ö¿¡ ´ëÇØ ÀÏÀÏÀÌ ½Ç½ÀÀ» ÇØ º¼ ¼ö´Â ¾ø°ÚÁö¸¸ ÀÌ ¹æ¹ý´ë·Î¶ó¸é ¿ëÁöÀÇ Å©±â, È®´ë Ãà¼Ò ºñÀ², Èæ¹é Àμâ, ÇѸ鿡 ¿©·¯ ÆäÀÌÁö Àμ⠵îÀÇ ¿É¼Çµµ ÇÁ·Î±×·¥ÀÌ ÅëÁ¦ÇÒ ¼ö ÀÖ´Ù.