¹Ù.ÆùÆ® ¼±ÅÃ

ApiDraw°¡ ±Û²ÃÀÇ Á¾·ù¸¦ ÀԷ¹޴ ¹æ¹ýÀº ¾ÆÁÖ ´Ü¼øÇؼ­ ±Û²ÃÀ» ¿À·ÎÁö À̸§¸¸À¸·Î ¼±ÅÃÇϵµ·Ï µÇ¾î ÀÖ´Ù. ±×·¯³ª À©µµ¿ìÁîÀÇ ÆùÆ® ¸ÅÆÛ´Â ±Û²ÃÀÇ À̸§º¸´Ù ¹®Àڼ°ú ÇÇÄ¡, Æйи®¸¦ ´õ ¿ì¼±ÀûÀ¸·Î °í·ÁÇϱ⠶§¹®¿¡ ¾Æ¹«¸® ±Û²ÃÀÇ À̸§ÀÌ ¸Â´õ¶óµµ ¿øÇÏ´Â ±Û²ÃÀÌ ¼±ÅõÇÁö ¾Ê´Â °æ¿ì°¡ ¸¹´Ù. Áö±Ý OnPaint¿¡ ÀÛ¼ºµÈ ±Û²Ã ¼±Åà ÄÚµå´Â ¹®ÀÚ¼ÂÀ» HANGUL_CHARSETÀ¸·Î, ÇÇÄ¡´Â °¡º¯À¸·Î, Æйи®´Â ROMANÀ¸·Î °¡Á¤ÇÏ°í Àִµ¥ ÀÌ´Â ¾ÆÁÖ À§ÇèÇÑ °¡Á¤ÀÌ´Ù.

ÀÌ »óÅ¿¡¼­ WingdingÀ̳ª Webding µîÀÇ Àå½Äü¸¦ ¼±ÅÃÇÏ¸é ±Û²ÃÀÌ Á¦´ë·Î Ãâ·ÂµÇÁö ¾Ê´Âµ¥ ±Û²Ã »ý¼º¹®ÀÇ ¹®ÀÚ¼ÂÀÌ Æ²·È±â ¶§¹®ÀÌ´Ù. ±Û²ÃÀ» Á¤È®ÇÏ°Ô ¼±ÅÃÇϱâ À§Çؼ­´Â ¹«¾ùº¸´Ùµµ ¹®ÀÚ¼ÂÀÌ ¿ì¼±ÀûÀ¸·Î ¸Â¾Æ¾ß ÇÑ´Ù. ±×·¸´Ù°í Çؼ­ ¼Ó¼º ´ëÈ­»óÀÚ¿¡ ¹®ÀÚ¼Â, ÇÇÄ¡, Æйи®¸¦ ¼±ÅÃÇϵµ·Ï »ç¿ëÀÚ¿¡°Ô ºÎ´ã½Ãų ¼öµµ ¾ø´Â ³ë¸©À̹ǷΠÁöÁ¤ÇÑ ±Û²ÃÀÇ Á¤È®ÇÑ ¼Ó¼ºÀ» ã´Â ÀÛ¾÷Àº ÇÁ·Î±×·¥ÀÌ Á÷Á¢ ÇØ¾ß ÇÑ´Ù. ÀÌ¹Ì ±Û²Ã ¿­°Å¸¦ ÇØ µÐ »óÅÂÀ̹ǷΠÀÌ Á¤º¸¸¦ Á¶»çÇÏ´Â °ÍÀº ¾î·ÆÁö ¾Ê´Ù. ¸ÕÀú ´ÙÀ½ ÇÔ¼ö¸¦ Ãß°¡ÇÑ´Ù.

 

int FindFontFromFace(TCHAR *Face)

{

   int i;

 

   if (FontNum == 0) {

      ReEnum();

   }

   for (i=0;i<FontNum;i++) {

      if (lstrcmp(logfont[i].lfFaceName,Face)==0) {

          return i;

      }

   }

   return -1;

}

 

ÀÌ ÇÔ¼ö´Â Àμö·Î Àü´ÞµÈ ±Û²Ã À̸§ÀÌ ¿­°ÅµÈ ¸ñ·ÏÀÇ ¸î ¹ø°¿¡ ÀÖ´ÂÁö¸¦ Á¶»çÇÏ¸ç ¹ß°ßµÇÁö ¾ÊÀ» °æ¿ì -1À» ¸®ÅÏÇÑ´Ù. ¿­°ÅµÈ °á°ú·ÎºÎÅÍ ÆùÆ®ÀÇ Æ¯¼ºÀ» Á¶»çÇØ¾ß ÇϹǷΠÀÌ ÇÔ¼ö°¡ Á¦´ë·Î µ¿ÀÛÇÏ·Á¸é ¸ÕÀú ¿­°Å¸¦ ÇØ ³õÀº »óÅ¿©¾ß ÇÑ´Ù. ¸¸¾à ±×·¸Áö ¾Ê´Ù¸é ÀÌ ÇÔ¼ö°¡ Á÷Á¢ ¿­°Å¸¦ Áö½ÃÇÑ´Ù. ±×·¡¼­ ÃÖÃÊ ¿­°Å¸¦ ÇÏ´Â ½ÃÁ¡Àº ¼Ó¼º ´ëÈ­»óÀÚ¸¦ ¿­°Å³ª ÅؽºÆ®¸¦ »ðÀÔÇÒ ¶§°¡ µÈ´Ù. OnPaint´Â ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÏ¿© »ç¿ëÀÚ°¡ ÁöÁ¤ÇÑ ±Û²ÃÀÇ Á¤È®ÇÑ Æ¯¼ºÀ» Á¶»çÇÒ ¼ö ÀÖ´Ù.

 

LRESULT OnPaint(HWND hWnd,WPARAM wParam,LPARAM lParam)

{

   ....

   int FontIdx;

   LOGFONT tFont;

 

      case DT_TEXT:

          FillRect(hMemDC,&arObj[idx]->rt,hBrush);

          FontHeight=arObj[idx]->FontSize*GetDeviceCaps(hMemDC,LOGPIXELSY)/72;

          FontIdx=FindFontFromFace(arObj[idx]->FontFace);

          if (FontIdx!=-1) {

             tFont=logfont[FontIdx];

             tFont.lfHeight=FontHeight;

             tFont.lfWidth=0;

             hFont=CreateFontIndirect(&tFont);

             hOldFont=(HFONT)SelectObject(hMemDC,hFont);

          }

          if (arObj[idx]->FontColor != (COLORREF)-1) {

             SetTextColor(hMemDC,arObj[idx]->FontColor);

             DrawText(hMemDC,arObj[idx]->Text,-1,&arObj[idx]->rt,DT_WORDBREAK);

          }

          if (FontIdx!=-1) {

             DeleteObject(SelectObject(hMemDC,hOldFont));

          }

          break;

 

ŸÀÔÆäÀ̽º·ÎºÎÅÍ ±Û²ÃÀÇ ¹øÈ£¸¦ ã°í ÀÌ ¹øÈ£·ÎºÎÅÍ logfont¹è¿­¿¡¼­ ±Û²Ã Ư¼ºÀ» º¹»çÇÑ ÈÄ Å©±â¸¸ »ç¿ëÀÚ°¡ ÁöÁ¤ÇÑ Å©±â·Î º¯°æÇÑ´Ù. ±×¸®°í Á¶»çµÈ Ư¼º´ë·Î ±Û²ÃÀ» »ý¼ºÇؼ­ »ç¿ëÇß´Ù. ¸¸¾à ÁöÁ¤ÇÑ ±Û²ÃÀÌ ¾ø´Ù¸é, ¿¹¸¦ µé¾î ´Ù¸¥ ÄÄÇ»ÅÍ¿¡¼­ ÆíÁýµÈ ÆÄÀÏÀ» º¹»çÇØ¿Â °æ¿ì¶ó¸é ½Ã½ºÅÛ ±Û²Ã·Î ´ë½Å Ãâ·ÂÇϵµ·Ï Çß´Ù. Á¸ÀçÇÏÁö ¾Ê´Â ±Û²Ã¿¡ ´ëÇؼ­´Â ´ëü ±Û²ÃÀ» ã¾Æ Ãâ·ÂÇÏ´Â ¼ö¹Û¿¡ ¾ø´Ù.

ÀÌ Äڵ忡 ÀÇÇØ ¹®Á¦°¡ ÀÏ´Ü ÇØ°áµÇ±â´Â ÇßÁö¸¸ OnPaint¿¡¼­ ¿­°ÅµÈ ±Û²Ã ¸ñ·ÏÀ» µÚÁø´Ù´Â °ÍÀº ¼Óµµ»ó »ó´çÇÑ ºÎ´ãÀÌ µÇ´Âµ¥ Á» ´õ ºü¸¥ ¼Óµµ¸¦ ¾ò°í ½Í´Ù¸é DObject ±¸Á¶Ã¼¿¡ ¹®ÀÚ¼Â, ÇÇÄ¡ µîÀÇ Á¤º¸¸¦ °°ÀÌ ÀúÀåÇØ¾ß ÇÑ´Ù. ¾Æ´Ï¸é ¾Æ¿¹ LOGFONT ±¸Á¶Ã¼¸¦ Åëä·Î ÀúÀåÇÏ´Â ¹æ¹ýµµ ÀÖ´Ù.