°¡. ¿É¼ÇÀÇ Àû¿ë

¼³Á¤ ´ëÈ­»óÀÚ¸¦ ÅëÇØ »ç¿ëÀÚ´Â NewOptionÀÇ °ªÀ» ¿øÇÏ´Â ´ë·Î º¯°æÇÏ°Ô µÈ´Ù. ÀÌ·¸°Ô º¯°æµÈ ¿É¼ÇÀº »ç¿ëÀÚ°¡ È®ÀÎ ¹öÆ°À» Ŭ¸¯Çϰųª Àû¿ë ¹öÆ°À» Ŭ¸¯ÇÏ¿© ¸í½ÃÀûÀ¸·Î Àû¿ëÇÒ °ÍÀ» ¸í·ÉÇؾ߸¸ ½ÇÁ¦·Î Àû¿ëµÈ´Ù. ¾Æ¹«¸® ¿É¼ÇÀ» º¹ÀâÇÏ°Ô ¹Ù²Ù¾ú´õ¶óµµ º¯°æµÇ´Â ´ë»óÀº NewOption»ÓÀ̸ç Ãë¼Ò ¹öÆ°À» Ŭ¸¯ÇÏ¸é ¸ðµç ¼³Á¤»óÅ´ ¿ø·¡ÀÇ °ªÀ» À¯ÁöÇÏ°Ô µÉ °ÍÀÌ´Ù.

»ç¿ëÀÚ°¡ È®ÀÎ ¶Ç´Â Àû¿ë ¹öÆ°À» Ŭ¸¯ÇÒ ¶§´Â °¢ ¼³Á¤ ´ëÈ­»óÀÚ·Î PSN_APPLY ÅëÁö ¸Þ½ÃÁö°¡ Àü´ÞµÇ¸ç ÀÌ ¸Þ½ÃÁö¸¦ ¹Þ¾ÒÀ» ¶§°¡ º¯°æµÈ ¿É¼ÇÀ» ½ÇÁ¦·Î Àû¿ëÇÒ ¶§ÀÌ´Ù. Áï ApiEdit¿Í DangeunÀÇ ¸ð¾çÀ̳ª µ¿ÀÛ¹æ½ÄÀ» º¯°æÇÒ ½ÃÁ¡ÀÎ °ÍÀÌ´Ù. °¢°¢ÀÇ ¼³Á¤ ÆäÀÌÁöµéÀº PSN_APPLY¸¦ ¹Þ¾ÒÀ» ¶§ ÀÚ½ÅÀÌ °¡Áø ¿É¼Ç Áß¿¡ º¯°æµÈ °ÍÀÌ ÀÖÀ¸¸é Àû¿ëÇØ¾ß Çϳª °³º° ÆäÀÌÁöµéÀÌ ÀÌ ÀÛ¾÷À» µû·Îµû·Î ÇÏÀÚ¸é Äڵ尡 Áߺ¹µÇ¹Ç·Î ¸ðµç Àû¿ë Äڵ带 ApplyNow¶ó´Â ÇÔ¼ö¿¡ ÀÛ¼ºÇϱâ·Î ÇÑ´Ù. ÆäÀÌÁöµéÀº PSN_APPLY ¸Þ½ÃÁö¸¦ ¹Þ¾ÒÀ» ¶§ ApplyNow ÇÔ¼ö¸¸ È£ÃâÇÏ¸é µÈ´Ù.

ApplyNowÀÇ ÄÚµå´Â ´ÙÀ½°ú °°´Ù. Áö±Ý±îÁö ¸¸µé¾îÁ® ÀÖ´Â ¸ðµç ¿É¼Ç »óÅ°¡ ÀÌ ÇÔ¼ö¿¡¼­ Àû¿ëµÇ´Âµ¥ ÄÚµåÀÇ ±æÀÌ´Â Á» ±æÁö¸¸ ºñ½ÁÇÑ ÄÚµåµéÀÇ ¹Ýº¹ÀÏ »ÓÀÌ´Ù.

 

void ApplyNow()

{

     HWND hChild;

     SInfo *pSi;

     HDC hdc;

     LOGFONT tFont;

 

     hChild=GetWindow(g_hMDIClient,GW_CHILD);

     while (hChild) {

          pSi=(SInfo *)GetWindowLong(hChild,0);

 

          if (Option.bNoFirstSpace != NewOption.bNoFirstSpace) {

               pSi->Ae.SetNoFirstSpace(NewOption.bNoFirstSpace);

          }

 

          if (Option.RightWrap != NewOption.RightWrap) {

               pSi->Ae.SetRightWrap(NewOption.RightWrap);

          }

 

          if (Option.ColMark != NewOption.ColMark) {

               pSi->Ae.SetColMark(NewOption.ColMark);

          }

 

          if (Option.bShowLineNum != NewOption.bShowLineNum) {

               pSi->Ae.SetShowState(SHOWLINENUM,NewOption.bShowLineNum);

          }

 

          if (Option.bShowMargin != NewOption.bShowMargin) {

               pSi->Ae.SetShowState(SHOWMARGIN,NewOption.bShowMargin);

          }

 

          if (Option.bShowEnter != NewOption.bShowEnter) {

               pSi->Ae.SetShowState(SHOWENTER,NewOption.bShowEnter);

          }

 

          if (Option.bShowTab != NewOption.bShowTab) {

               pSi->Ae.SetShowState(SHOWTAB,NewOption.bShowTab);

          }

 

          if (Option.bShowSpace != NewOption.bShowSpace) {

               pSi->Ae.SetShowState(SHOWSPACE,NewOption.bShowSpace);

          }

 

          if (Option.LineRatio != NewOption.LineRatio) {

               pSi->Ae.SetLineRatio(NewOption.LineRatio);

          }

 

          if (Option.nShowCurLine != NewOption.nShowCurLine) {

               pSi->Ae.SetShowCurLine(NewOption.nShowCurLine);

          }

 

          if (Option.HideSelType != NewOption.HideSelType) {

               pSi->Ae.SetHideSelType(NewOption.HideSelType);

          }

 

          if (lstrcmp(Option.logfont.lfFaceName,NewOption.logfont.lfFaceName) != 0 ||

               Option.logfont.lfHeight != NewOption.logfont.lfHeight) {

               tFont=NewOption.logfont;

               hdc=GetDC(NULL);

               tFont.lfHeight=NewOption.logfont.lfHeight*GetDeviceCaps(hdc,LOGPIXELSY)/72;

               tFont.lfWidth=0;

               ReleaseDC(NULL,hdc);

               pSi->Ae.SetFont(&tFont);

          }

 

          if (Option.cFore != NewOption.cFore) {

               pSi->Ae.SetForeColor(NewOption.cFore & 0xff000000 ?

                   NewOption.cFore & 0xffffff:arSysColor[0]);

          }

 

          if (Option.cBack != NewOption.cBack) {

               pSi->Ae.SetBackColor(NewOption.cBack & 0xff000000 ?

                   NewOption.cBack & 0xffffff:arSysColor[1]);

          }

 

          if (Option.cSelFore != NewOption.cSelFore) {

               pSi->Ae.SetSelForeColor(NewOption.cSelFore & 0xff000000 ?

                   NewOption.cSelFore & 0xffffff:arSysColor[2]);

          }

 

          if (Option.cSelBack != NewOption.cSelBack) {

               pSi->Ae.SetSelBackColor(NewOption.cSelBack & 0xff000000 ?

                   NewOption.cSelBack & 0xffffff:arSysColor[3]);

          }

 

          if (Option.MarColor1 != NewOption.MarColor1) {

               pSi->Ae.SetMarColor1(NewOption.MarColor1 & 0xff000000 ?

                   NewOption.MarColor1 & 0xffffff:arSysColor[4]);

          }

 

          if (Option.MarColor2 != NewOption.MarColor2) {

               pSi->Ae.SetMarColor2(NewOption.MarColor2 & 0xff000000 ?

                   NewOption.MarColor2 & 0xffffff:arSysColor[5]);

          }

 

          if (Option.MarkColor != NewOption.MarkColor) {

               pSi->Ae.SetMarkColor(NewOption.MarkColor & 0xff000000 ?

                   NewOption.MarkColor & 0xffffff:arSysColor[6]);

          }

 

          if (Option.CodeColor != NewOption.CodeColor) {

               pSi->Ae.SetCodeColor(NewOption.CodeColor & 0xff000000 ?

                   NewOption.CodeColor & 0xffffff:arSysColor[7]);

          }

 

          if (Option.CurColor != NewOption.CurColor) {

               pSi->Ae.SetCurColor(NewOption.CurColor & 0xff000000 ?

                   NewOption.CurColor & 0xffffff:arSysColor[8]);

          }

 

          if (Option.NumColor != NewOption.NumColor) {

               pSi->Ae.SetNumColor(NewOption.NumColor & 0xff000000 ?

                   NewOption.NumColor & 0xffffff:arSysColor[9]);

          }

 

          if (Option.bHideCurLine != NewOption.bHideCurLine) {

               pSi->Ae.SetHideCurLine(NewOption.bHideCurLine);

          }

 

          if (Option.bCalcTabWithAvg != NewOption.bCalcTabWithAvg) {

               pSi->Ae.SetCalcTabWithAvg(NewOption.bCalcTabWithAvg);

          }

 

          if (Option.CaretWidth != NewOption.CaretWidth) {

               pSi->Ae.SetCaretWidth(NewOption.CaretWidth);

          }

 

          if (Option.TabWidth != NewOption.TabWidth) {

               pSi->Ae.SetTabWidth(NewOption.TabWidth);

          }

 

          if (Option.bAllowDrag != NewOption.bAllowDrag) {

               pSi->Ae.SetAllowDrag(NewOption.bAllowDrag);

          }

 

          if (Option.bUseLineEnd != NewOption.bUseLineEnd) {

               pSi->Ae.SetUseLineEnd(NewOption.bUseLineEnd);

          }

 

          if (Option.nWrap != NewOption.nWrap) {

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

                   pSi->Ae.SetWrap(NewOption.nWrap);

               }

          }

          hChild=GetWindow(hChild,GW_HWNDNEXT);

     }

 

     Option=NewOption;

}

 

ù Â÷ÀϵåÀÇ ÇÚµéÀ» hChild¿¡ ±¸ÇÏ°í while ·çÇÁ¸¦ µ¹¸ç ¿­¸° ¸ðµç Â÷Àϵ忡 ´ëÇØ ¿É¼ÇÀ» Àû¿ëÇÑ´Ù. Áï »ý¼ºµÇ¾î ÀÖ´Â ¸ðµç ApiEdit ÄÁÆ®·ÑÀÌ º¯°æµÈ ¿É¼ÇÀÇ ¿µÇâÀ» ¹Þ´Â °ÍÀÌ´Ù.

¿É¼ÇÀ» º¯°æÇÏ´Â ÄÚµå´Â ¾ÆÁÖ °£´ÜÇÏ´Ù. NewOption°ú OptionÀÇ ´ëÀÀµÇ´Â º¯¼ö°ªÀ» ºñ±³ÇÏ¿© º¯°æµÇ¾úÀ¸¸é ApiEditÀÇ °ü·Ã ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ³»ºÎ ¼³Á¤ º¯¼ö°ªÀ» ¹Ù²Ù°í ÇÊ¿äÇÑ Á¶Ä¡¸¦ Çϵµ·Ï ÇÏ´Â °ÍÀÌ´Ù. NewOption ±¸Á¶Ã¼´Â ¼³Á¤ ´ëÈ­»óÀÚ°¡ ¿­¸®±â Á÷Àü¿¡ Option ±¸Á¶Ã¼¸¦ º¹»çÇßÀ¸¸ç ÀÌ ÇÔ¼ö°¡ È£ÃâµÇ¾úÀ» ¶§´Â »ç¿ëÀÚ°¡ º¯°æÇÑ ¿É¼Ç »óŸ¦ °¡Áö°í ÀÖÀ» °ÍÀÌ´Ù. ±×·¡¼­ NewOption°ú OptionÀ» ºñ±³Çغ¸¸é »ç¿ëÀÚ°¡ ¾î¶² ¿É¼ÇÀ» º¯°æÇß´ÂÁö¸¦ ¾Ë ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î ÅÇ Å©±â¸¦ Àû¿ëÇÏ´Â ´ÙÀ½ Äڵ带 º¸ÀÚ.

 

if (Option.TabWidth != NewOption.TabWidth) {

     pSi->Ae.SetTabWidth(NewOption.TabWidth);

}

 

OptionÀÇ TabWidth(¿ø·¡ ÅÇ Æø)°¡ NewOptionÀÇ TabWidth(º¯°æµÈ ÅÇ Æø)¿Í ´Ù¸£´Ù´Â Á¶°ÇÀº »ç¿ëÀÚ°¡ ÅÇ Å©±â ¿É¼ÇÀ» Á¶Á¤Çß´Ù´Â ¶æÀÌ´Ù. ÀÌ °æ¿ì AeÀÇ SetTabWidth ¸â¹öÇÔ¼ö¸¦ È£ÃâÇÏ¿© »õ·Î º¯°æµÈ ÅÇ ÆøÀ» Àü´ÞÇÑ´Ù. ApiEdit´Â ÀÌ ÇÔ¼ö°¡ È£ÃâµÇ¾úÀ» ¶§ ³»ºÎÀûÀ¸·Î À¯ÁöÇÏ°í ÀÖ´Â TabWidth¸¦ º¯°æÇÒ °ÍÀÌ°í ÀÌ °ªÀ¸·ÎºÎÅÍ ½ÇÁ¦ÀÇ ÅÇ Å©±âÀÎ TabSize¸¦ Àç°è»êÇϸç Á¤·Ä ¹× ½ºÅ©·Ñ Á¤º¸ °»½ÅÀ» ÇÒ °ÍÀÌ´Ù.

»ç¿ëÀÚ°¡ ÅÇ Å©±â ¿É¼ÇÀ» Á¶Á¤ÇÏÁö ¾ÊÀ¸¸é ¾Æ¹« Àϵµ ÀϾÁö ¾Ê´Â´Ù. ±×·¡¼­ NewOption°ú OptionÀÇ ´ëÀÀµÇ´Â ¸â¹ö¸¦ ºñ±³ÇÏ´Â °ÍÀÌ Áß¿äÇÏ´Ù. ¸¸¾à »ç¿ëÀÚÀÇ ¿É¼Ç Á¶Á¤ ¿©ºÎ¸¦ È®ÀÎÇÏÁö ¾Ê°í ¹«Á¶°Ç ¿É¼ÇÀ» Àû¿ëÇϸé ApiEditÀÇ ¸ðµç Set ÇÔ¼ö°¡ È£ÃâµÉ °ÍÀÌ°í ºÒÇÊ¿äÇÑ ½Ã°£À» ³¶ºñÇÏ°Ô µÈ´Ù.

»ö»óÀ» Àû¿ëÇÏ´Â ¿É¼ÇÀº Á¶±Ý ƯÀÌÇÏ´Ù. »ö»ó°ªÀ» ±â¾ïÇÏ´Â º¯¼öÀÇ »óÀ§ ¹ÙÀÌÆ®´Â »ö»óÇ¥ÀÇ »ö»ó ¹øÈ£¸¦ °¡Áö´Âµ¥ ¸¸¾à ÀÌ °ªÀÌ 0ÀÌ¸é ±âº»»öÀ̹ǷΠarSysColor ¹è¿­¿¡¼­ ÀÐÀº ±âº» »ö»óÀ» Àû¿ëÇØ¾ß ÇÑ´Ù. ±Û²ÃÀÇ À̸§ÀÌ º¯°æµÇ¾ú°Å³ª Å©±â°¡ º¯°æµÇ¾úÀ» ¶§ SetFont ÇÔ¼ö¸¦ È£ÃâÇϴµ¥ logfont ±¸Á¶Ã¼ÀÇ lfHeight´Â Æ÷ÀÎÆ® ´ÜÀ§ÀÇ °ªÀ» °¡Áö¹Ç·Î ÀÌ °ªÀ» Çȼ¿·Î ¹Ù²Û ÈÄ Àû¿ëÇØ¾ß ÇÑ´Ù. nWrap ¿É¼Çµµ Àû¿ëÇÏ´Â ¹æ½ÄÀÌ Á¶±Ý ´Ù¸£´Ù. Option±¸Á¶Ã¼ÀÇ nWrapÀº °³ÇàÀ» ÇÒ °æ¿ì ¾î¶² °³Çà ¹æ½ÄÀ» Àû¿ëÇÒ °ÍÀΰ¡¸¦ ÁöÁ¤ÇÏ´Â °ÍÀ̹ǷΠApiEdit°¡ ÀÚµ¿°³Çà »óÅÂÀÏ ¶§¸¸ Àû¿ëµÈ´Ù.

¸ðµç Â÷Àϵ忡 ´ëÇØ º¯°æµÈ ¿É¼ÇÀ» Àû¿ëÇÑ ÈÄ ¸¶Áö¸·À¸·Î Option=NewOption ´ëÀÔ¹®À¸·Î º¯°æµÈ ¿É¼ÇÀ» ÇöÀç ¿É¼ÇÀ¸·Î ¸¸µç´Ù. ÀÌ ´ëÀÔ¹®À¸·Î ¿É¼Ç »óŸ¦ ±â¾ïÇÏ´Â Option ±¸Á¶Ã¼´Â »ç¿ëÀÚÀÇ ¸ðµç ¼³Á¤ Áö½Ã¸¦ ±â¾ïÇÏ°Ô µÇ¸ç NewOptionÀº ±× ¼ÒÀÓÀ» ´ÙÇÏ°í ´ÙÀ½ ¼³Á¤ ´ëÈ­»óÀÚ°¡ È£ÃâµÉ ¶§±îÁö ½¬°Ô µÈ´Ù.

ApiEdit¿¡ Á÷Á¢ Àû¿ëµÇÁö ¾Ê´Â °ªÀº Option¿¡ ´ëÀÔÇسõ±â¸¸ ÇÑ´Ù. StartAction °°Àº ¿É¼ÇÀº ¹Ù²Û´Ù°í Çؼ­ ´çÀå ¾î¶² È¿°ú¸¦ ¹ßÈÖÇØ¾ß ÇÏ´Â °ÍÀÌ ¾Æ´Ï¹Ç·Î ApplyNow ÇÔ¼ö´Â ÀÌ·± ¿É¼Çµé¿¡ ´ëÇؼ­´Â ¾Æ¹«·± Á¶Ä¡¸¦ ÃëÇÏÁö ¾Ê¾Æµµ µÈ´Ù.