´Ù. °³º° À©µµ¿ìÀÇ ¿É¼Ç

¼³Á¤ ´ëÈ­»óÀÚ¿¡¼­ ÁöÁ¤ÇÑ ¿É¼ÇÀº ÀÌ¹Ì ¸¸µé¾îÁø Â÷Àϵå´Â ¹°·ÐÀÌ°í ¾ÕÀ¸·Î ¸¸µé¾îÁú â¿¡ ´ëÇؼ­µµ Àû¿ëµÈ´Ù. Áï ÀÌ ´ëÈ­»óÀÚ¿¡¼­ º¯°æÇÑ ¿É¼ÇÀº ¸ðµç Â÷Àϵ尡 °øÅëÀûÀ¸·Î »ç¿ëÇÏ´Â ¿É¼ÇÀÌ´Ù. ¿©±â¼­ ÁÙ°£À» 150À¸·Î ¹Ù²Ù¸é ¸ðµç âÀÇ ÁÙ°£ÀÌ °°ÀÌ 150À¸·Î ¹Ù²î¸ç ±Û²ÃÀ» ¹Ù²Ù¸é ¸ðµÎ ÇѲ¨¹ø¿¡ ¹Ù²ï´Ù. ÅؽºÆ® ÆíÁýâÀº ¸ðµÎ ÅؽºÆ® ÆíÁýÀ̶ó´Â °°Àº ¸ñÀûÀ¸·Î ¸¸µé¾îÁö¹Ç·Î ¸ðµç ¿É¼ÇÀÌ °°ÀÌ Àû¿ëµÇ´Â °ÍÀÌ ¸¶¶¥ÇÏ´Ù.

ÇÏÁö¸¸ ¼³Á¤ ´ëÈ­»óÀÚ´Â ¸Å¹ø ¿­¾ú´Ù ´Ý±â°¡ ¹ø°Å·Î¿ì¹Ç·Î ÀϺΠÀÚÁÖ »ç¿ëÇÏ´Â ¸î °³ÀÇ ¿É¼ÇÀº °³º° â¿¡ ´ëÇؼ­¸¸ ½Å¼ÓÇÏ°Ô º¯°æÇÒ ¼ö ÀÖ´Â ÀåÄ¡°¡ ÀÖ´Ù¸é Æí¸®ÇÒ °ÍÀÌ´Ù. ¿¹¸¦ µé¾î ÀÚµ¿°³Çà ¿É¼ÇÀº ¹®¼­ÀÇ ¼º°Ý¿¡ µû¶ó ´Ù¸£°Ô Àû¿ëÇÒ ¼ö ÀÖÀ¸¹Ç·Î °¢ âÀÇ °³Çà ¿É¼ÇÀº µû·Î º¯°æÇÒ ¼ö ÀÖ¾î¾ß ÇÏ¸ç ±×°Íµµ ¼ö½Ã·Î ºü¸¥ ¼Óµµ·Î ¹Ù²Ü ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ÀÌ·± ¸ñÀûÀ¸·Î ÇöÀç È°¼ºÈ­µÈ Â÷Àϵå Çϳª¿¡ ´ëÇؼ­¸¸ ¿É¼ÇÀ» º¯°æÇÒ ¼ö ÀÖµµ·Ï Çغ¸ÀÚ.

º¸±â ¸Þ´º¿¡´Â ÀÌ¹Ì °ü·Ã ¸Þ´ºÇ׸ñÀÌ ¸¸µé¾îÁ® ÀÖÀ¸¸ç º¯°æ ´ë»óÀº ÀÚµ¿°³Çà, Á¦¾îÄÚµå º¸±â, ÁÙ°£, ±Û²Ã µîÀÌ¸ç ¾ÆÁ÷ ±â´ÉÀº ¾øÁö¸¸ ¹®¹ýµµ ¹®¼­¿¡ µû¶ó ´Ù¸£°Ô Àû¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÒ °ÍÀÌ´Ù. ±Û²ÃÀº ¿øÄ¢ÀûÀ¸·Î ÆùÆ® ¼±Åà ´ëÈ­»óÀÚ¿¡¼­ ¼±ÅÃÇØ¾ß ÇÏÁö¸¸ ½Å¼ÓÇÏ°Ô ±Û²ÃÀ» ¹Ù²Ù±â¿¡´Â ºÎÀûÇÕÇϹǷΠ¹Ì¸® Á¤ÀÇµÈ ±Û²Ã ¼¼Æ® 10°³¸¦ ´ÙÀ½°ú °°ÀÌ ¼±¾ðÇÑ´Ù.

 

LOGFONT arCustomFont[10]={

     {0,0,0,0,0,0,0,0,0,0,0,0,0,""},

     {10,0,0,0,0,0,0,0,HANGEUL_CHARSET,3,2,1,VARIABLE_PITCH | FF_MODERN,"±¼¸²"},

     {12,0,0,0,0,0,0,0,HANGEUL_CHARSET,3,2,1,VARIABLE_PITCH | FF_MODERN,"±¼¸²"},

     {10,0,0,0,0,0,0,0,HANGEUL_CHARSET,3,2,1,VARIABLE_PITCH | FF_MODERN,"±¼¸²Ã¼"},

     {12,0,0,0,0,0,0,0,HANGEUL_CHARSET,3,2,1,VARIABLE_PITCH | FF_MODERN,"±¼¸²Ã¼"},

     {12,0,0,0,0,0,0,0,HANGEUL_CHARSET,3,2,1,VARIABLE_PITCH | FF_MODERN,"±Ã¼­"},

     {15,0,0,0,0,0,0,0,HANGEUL_CHARSET,3,2,1,VARIABLE_PITCH | FF_MODERN,"±Ã¼­"},

     {20,0,0,0,0,0,0,0,HANGEUL_CHARSET,3,2,1,VARIABLE_PITCH | FF_MODERN,"±Ã¼­"},

     {12,0,0,0,0,0,0,0,HANGEUL_CHARSET,3,2,1,VARIABLE_PITCH | FF_MODERN,"¹ÙÅÁ"},

     {15,0,0,0,0,0,0,0,HANGEUL_CHARSET,3,2,1,VARIABLE_PITCH | FF_MODERN,"¹ÙÅÁ"}

};

 

º¸±â/È°¼ºÃ¢ÀÇ ±Û²Ã ¾Æ·¡¿¡ ÀÖ´Â ¸Þ´ºÇ׸ñÀ» ¼±ÅÃÇϸé È°¼ºÃ¢ÀÇ ±Û²ÃÀ» ÀÌ ±¸Á¶Ã¼ÀÇ ±Û²Ã·Î º¯°æÇÒ °ÍÀÌ´Ù. ÀÌ ±¸Á¶Ã¼ ¹è¿­ÀÇ lfHeight´Â Æ÷ÀÎÆ® ´ÜÀ§Àε¥ ½ÇÁ¦·Î ÆùÆ®¸¦ »ý¼ºÇÒ ¶§ ÀÌ °ªÀº Çȼ¿·Î 󸮵ǹǷΠÆ÷ÀÎÆ® ´ÜÀ§¸¦ Çȼ¿°ªÀ¸·Î º¯°æÇØ¾ß ÇÑ´Ù. OnCreate¿¡¼­ ÀÌ °ªÀ» Çػ󵵿¡ ¸Â°Ô º¯°æÇÑ´Ù.

 

int OnCreate(HWND hWnd,WPARAM wParam,LPARAM lParam)

{

    int i;

    HDC hdc;

     ....

    hdc=GetDC(NULL);

    for (i=1;i<10;i++) {

        arCustomFont[i].lfHeight=arCustomFont[i].lfHeight*GetDeviceCaps(hdc,LOGPIXELSY)/72;

    }

    ReleaseDC(NULL,hdc);

     DragAcceptFiles(hWnd,TRUE);

     return 0;

}

 

È°¼ºÃ¢ÀÇ ¿É¼Ç º¯°æÀº OnCommand¿¡¼­ ó¸®ÇÑ´Ù. °¢ ¸Þ´ºÇ׸ñ¿¡ ´ëÀÀµÇ´Â ÇÔ¼ö¸¦ È£ÃâÇÏ´Â ¾ÆÁÖ ´Ü¼øÇÑ ¸í·ÉÀÇ ³ª¿­µéÀÌ´Ù.

 

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

{

     CHOOSEFONT CFT;

     LOGFONT lf;

     ....

     case IDM_VIEW_WORDWRAP:

          pSi->Ae.SetWrap(pSi->Ae.GetWrap()==0 ? Option.nWrap:0);

          break;

     case IDM_VIEW_CODE:

          if (pSi->Ae.GetShowState(SHOWENTER)) {

               pSi->Ae.SetShowState(SHOWENTER,FALSE);

               pSi->Ae.SetShowState(SHOWTAB,FALSE);

               pSi->Ae.SetShowState(SHOWSPACE,FALSE);

          } else {

               pSi->Ae.SetShowState(SHOWENTER,TRUE);

               pSi->Ae.SetShowState(SHOWTAB,TRUE);

               pSi->Ae.SetShowState(SHOWSPACE,TRUE);

          }

          break;

     case IDM_FONT_1:

          pSi->Ae.SetFont(&arCustomFont[0]);

          break;

     case IDM_FONT_2:

          pSi->Ae.SetFont(&arCustomFont[1]);

          break;

     case IDM_FONT_3:

          pSi->Ae.SetFont(&arCustomFont[2]);

          break;

     case IDM_FONT_4:

          pSi->Ae.SetFont(&arCustomFont[3]);

          break;

     case IDM_FONT_5:

          pSi->Ae.SetFont(&arCustomFont[4]);

          break;

     case IDM_FONT_6:

          pSi->Ae.SetFont(&arCustomFont[5]);

          break;

     case IDM_FONT_7:

          pSi->Ae.SetFont(&arCustomFont[6]);

          break;

     case IDM_FONT_8:

          pSi->Ae.SetFont(&arCustomFont[7]);

          break;

     case IDM_FONT_9:

          pSi->Ae.SetFont(&arCustomFont[8]);

          break;

     case IDM_FONT_10:

          pSi->Ae.SetFont(&arCustomFont[9]);

          break;

     case IDM_FONT_11:

          memset(&CFT, 0, sizeof(CHOOSEFONT));

          CFT.lStructSize = sizeof(CHOOSEFONT);

          CFT.hwndOwner=hWnd;

          pSi->Ae.GetFont(&lf);

          CFT.lpLogFont=&lf;

          CFT.Flags=CF_EFFECTS | CF_SCREENFONTS;

          if (ChooseFont(&CFT)) {

               pSi->Ae.SetFont(&lf);

          }

          break;

     case IDM_LINE_1:

          pSi->Ae.SetLineRatio(100);

          break;

     case IDM_LINE_2:

          pSi->Ae.SetLineRatio(120);

          break;

     case IDM_LINE_3:

          pSi->Ae.SetLineRatio(150);

          break;

     case IDM_LINE_4:

          pSi->Ae.SetLineRatio(200);

          break;

     case IDM_LINE_5:

          pSi->Ae.SetLineRatio(300);

          break;

     ....

 

ÀÚµ¿°³ÇàÀº 0°ú Option.nWrap »çÀ̸¦ Åä±ÛÇÑ´Ù. Á¦¾îÄÚµå´Â ¼¼ °¡Áö Á¾·ù°¡ ÀÖÁö¸¸ °¢ Äڵ带 °³º°ÀûÀ¸·Î Åä±ÛÇÏ·Á¸é ¸Þ´ºÇ׸ñÀ̳ª ´ÜÃàÅ°°¡ ¸¹¾ÆÁ® ¿ÀÈ÷·Á ¹ø°Å·Î¿ì¹Ç·Î ¼¼ °¡Áö Äڵ带 ÇѲ¨¹ø¿¡ Åä±ÛÇϵµ·Ï Çß´Ù. ±Û²ÃÀº ±Û²Ã ¼±Åà Ç׸ñ¸¸ Á¦¿ÜÇÏ°í arCustomFont ±¸Á¶Ã¼ ¹è¿­¿¡ ¹Ì¸® Á¤ÀÇµÈ ±Û²Ã·Î SetFont ÇÔ¼ö¸¦ È£ÃâÇÏ¿´°í ÁÙ°£Àº ¹Ì¸® Á¤ÀÇµÈ °ªÀ¸·Î SetLineRatio¸¦ È£ÃâÇÏ¿´´Ù. ÀÌÁ¦ º¸±â ¸Þ´º¸¦ »ç¿ëÇϸé È°¼ºÃ¢¿¡ ´ëÇÑ ¿É¼ÇÀº °£´ÜÇÏ°Ô º¯°æÇÒ ¼ö ÀÖÀ¸¸ç ´ÜÃàÅ°°¡ Áö¿øµÇ´Â ÀÚµ¿°³Çà, Á¦¾îÄÚµå º¸±â´Â <Ctrl+W>, <Ctrl+E>·Î °£´ÜÇÏ°Ô Åä±ÛÇÒ ¼ö ÀÖ´Ù.

¸Þ´º·Î ¼³Á¤»óŸ¦ ½Å¼ÓÇÏ°Ô º¯°æÇÒ ¼ö ÀÖµµ·Ï ÇßÀ¸¹Ç·Î ¸Þ´º¿¡ ÇöÀç ¼³Á¤»óŸ¦ º¸¿©ÁÖ¾î¾ß ÇÑ´Ù. OnInitMenu ÇÔ¼ö¿¡ ´ÙÀ½ Äڵ带 ÀÛ¼ºÇÑ´Ù.

 

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

{

     ....

     if (hActive) {

          ....

          if (pSi->Ae.GetWrap() != 0) {

               CheckMenuItem(hMenu, IDM_VIEW_WORDWRAP, MF_BYCOMMAND | MF_CHECKED);

          } else {

               CheckMenuItem(hMenu, IDM_VIEW_WORDWRAP, MF_BYCOMMAND | MF_UNCHECKED);

          }

 

          if (pSi->Ae.GetShowState(SHOWENTER)) {

               CheckMenuItem(hMenu, IDM_VIEW_CODE, MF_BYCOMMAND | MF_CHECKED);

          } else {

               CheckMenuItem(hMenu, IDM_VIEW_CODE, MF_BYCOMMAND | MF_UNCHECKED);

          }

 

          for (s=IDM_LINE_1;s<=IDM_LINE_5;s++) {

               CheckMenuItem(hMenu,s,MF_BYCOMMAND | MF_UNCHECKED);

          }

          switch (pSi->Ae.GetLineRatio())

          {

          case 100:CheckMenuItem(hMenu,IDM_LINE_1,MF_BYCOMMAND | MF_CHECKED);break;

          case 120:CheckMenuItem(hMenu,IDM_LINE_2,MF_BYCOMMAND | MF_CHECKED);break;

          case 150:CheckMenuItem(hMenu,IDM_LINE_3,MF_BYCOMMAND | MF_CHECKED);break;

          case 200:CheckMenuItem(hMenu,IDM_LINE_4,MF_BYCOMMAND | MF_CHECKED);break;

          case 300:CheckMenuItem(hMenu,IDM_LINE_5,MF_BYCOMMAND | MF_CHECKED);break;

          }

     }

}

 

ÇöÀç ¼±ÅÃµÈ ¿É¼Ç¿¡ ´ëÇØ ¸Þ´º ¿·¿¡ üũ Ç¥½Ã¸¦ ºÙ¿©ÁÖ¾ú´Ù. ´Ü, ±Û²ÃÀº Á¤È®ÇÏ°Ô ºñ±³ÇϱⰡ ¾î·Á¿ì¹Ç·Î üũ Ç¥½Ã¸¦ ºÙÀÌÁö ¾Ê¾Ò´Ù.