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 ±¸Á¶Ã¼¸¦ Åëä·Î ÀúÀåÇÏ´Â ¹æ¹ýµµ ÀÖ´Ù.