³ª. ¼³Á¤ ´ëÈ­»óÀÚ È£Ãâ

¼³Á¤ ´ëÈ­»óÀÚÀÇ ÄÚµå¿Í ¼³Á¤À» Àû¿ëÇÏ´Â ApplyNow ÇÔ¼ö¸¦ ¿Ï¼ºÇß´Ù. ÀÌÁ¦ È£½ºÆ®°¡ ÀÌ ÇÔ¼ö¸¦ È£ÃâÇϵµ·Ï Çغ¸ÀÚ. µµ±¸/±âº» ¼³Á¤ ¸Þ´ºÇ׸ñÀ» ¼±ÅÃÇÒ ¶§ Config ÇÔ¼ö¸¸ È£ÃâÇÏ¸é µÈ´Ù.

 

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

{

     case IDM_TOOL_CONFIG:

          Config();

          break;

     ....

 

Config ÇÔ¼ö´Â ¼³Á¤ ´ëÈ­»óÀÚ¸¦ ¸¸µé°í È­¸é¿¡ Ç¥½ÃÇÏ¿© »ç¿ëÀڷκÎÅÍ ¿É¼ÇÀ» º¯°æÇÒ ¼ö ÀÖµµ·Ï ÇÏ°í ¿É¼ÇÀ» Àû¿ëÇÏ´Â °Í±îÁö ´Ù ÇϹǷΠÀÌ ÇÔ¼ö¸¸ ºÒ·¯ÁÖ¸é ¼³Á¤ º¯°æ¿¡ °ü·ÃµÈ ¸ðµç µ¿ÀÛÀÌ Ã³¸®µÈ´Ù. Option±¸Á¶Ã¼´Â Ç×»ó »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ ¼³Á¤»óŸ¦ °¡Áö°Ô µÉ °ÍÀÌ´Ù. ÀÌ ±¸Á¶Ã¼´Â »õ·Î¿î Â÷Àϵ带 »ý¼ºÇÒ ¶§µµ Àû¿ëµÈ´Ù. ´ÙÀ½ ÇÔ¼ö´Â »õ·Î Â÷Àϵ带 ¸¸µé ¶§ ApiEditÄÁÆ®·ÑÀÇ ¼³Á¤À» Option±¸Á¶Ã¼ÀÇ ¼³Á¤´ë·Î º¯°æÇÑ´Ù.

 

void SetSetting(CApiEdit &Ae)

{

     SOption Ori;

     HDC hdc;

     LOGFONT tFont;

 

     if (Option.Hangul) {

          MySetImeMode(Ae.hWnd,TRUE);

     }

 

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

          Ae.SetNoFirstSpace(Option.bNoFirstSpace);

     }

 

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

          Ae.SetRightWrap(Option.RightWrap);

     }

 

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

          Ae.SetColMark(Option.ColMark);

     }

 

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

          Ae.SetLineRatio(Option.LineRatio);

     }

 

     if (Option.bWrap == TRUE) {

          if (Option.nWrap != Ae.GetWrap()) {

               Ae.SetWrap(Option.nWrap);

          }

     } else {

          Ae.SetWrap(0);

     }

 

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

          Ae.SetHideSelType(Option.HideSelType);

     }

 

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

          Ae.SetShowCurLine(Option.nShowCurLine);

     }

 

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

          Ae.SetShowState(SHOWMARGIN,Option.bShowMargin);

     }

 

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

          Ae.SetShowState(SHOWLINENUM,Option.bShowLineNum);

     }

 

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

          Ae.SetShowState(SHOWENTER,Option.bShowEnter);

     }

 

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

          Ae.SetShowState(SHOWTAB,Option.bShowTab);

     }

 

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

          Ae.SetShowState(SHOWSPACE,Option.bShowSpace);

     }

 

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

          Ae.SetTabWidth(Option.TabWidth);

     }

 

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

          Ae.SetUseLineEnd(Option.bUseLineEnd);

     }

 

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

          Ae.SetAllowDrag(Option.bAllowDrag);

     }

 

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

          Ae.SetCaretWidth(Option.CaretWidth);

     }

 

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

          Ae.SetHideCurLine(Option.bHideCurLine);

     }

 

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

          Ae.SetCalcTabWithAvg(Option.bCalcTabWithAvg);

     }

 

     if (Option.logfont.lfHeight != Ori.logfont.lfHeight) {

          tFont=Option.logfont;

          hdc=GetDC(NULL);

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

          tFont.lfWidth=0;

          ReleaseDC(NULL,hdc);

          Ae.SetFont(&tFont);

     }

 

     if (Option.cFore & 0xff000000) {

          Ae.SetForeColor(Option.cFore & 0xffffff);

     }

 

     if (Option.cBack & 0xff000000) {

          Ae.SetBackColor(Option.cBack & 0xffffff);

     }

 

     if (Option.cSelFore & 0xff000000) {

          Ae.SetSelForeColor(Option.cSelFore & 0xffffff);

     }

 

     if (Option.cSelBack & 0xff000000) {

          Ae.SetSelBackColor(Option.cSelBack & 0xffffff);

     }

 

     if (Option.MarColor1 & 0xff000000) {

          Ae.SetMarColor1(Option.MarColor1 & 0xffffff);

     }

 

     if (Option.MarColor2 & 0xff000000) {

          Ae.SetMarColor2(Option.MarColor2 & 0xffffff);

     }

 

     if (Option.MarkColor & 0xff000000) {

          Ae.SetMarkColor(Option.MarkColor & 0xffffff);

     }

 

     if (Option.CodeColor & 0xff000000) {

          Ae.SetCodeColor(Option.CodeColor & 0xffffff);

     }

 

     if (Option.CurColor & 0xff000000) {

          Ae.SetCurColor(Option.CurColor & 0xffffff);

     }

 

     if (Option.NumColor & 0xff000000) {

          Ae.SetNumColor(Option.NumColor & 0xffffff);

     }

}

 

±âº» ¿É¼ÇÀ» °¡Áö´Â Ori ±¸Á¶Ã¼¸¦ »ý¼ºÇϸé ÀÌ ±¸Á¶Ã¼´Â È£½ºÆ®ÀÇ µðÆúÆ® ¿É¼Ç´ë·Î »ý¼ºµÉ °ÍÀÌ´Ù. Ori ±¸Á¶Ã¼ ³»¿ë°ú Option ±¸Á¶Ã¼ÀÇ ³»¿ë Áß ´Ù¸¥ °Í¸¸ ã¾Æ ³»¸é ApiEdit¿¡ Ãß°¡·Î ÁöÁ¤ÇØ¾ß ÇÒ ¼³Á¤°ªÀ» ¾Ë ¼ö ÀÖÀ¸¸ç ÀÌ ¿É¼ÇµéÀ» »õ·Î »ý¼ºµÈ ApiEdit¿¡ Àû¿ëÇÑ´Ù. ±× ¿ÜÀÇ ¿É¼ÇÀº µðÆúÆ®¿Í °°À¸¹Ç·Î ±»ÀÌ »õ·Î ¿É¼ÇÀ» Àû¿ëÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ¸¸¾à ÄÁÆ®·ÑÀÇ µðÆúÆ®¿Í È£½ºÆ®ÀÇ µðÆúÆ®°¡ ´Ù¸£´Ù¸é ÄÁÆ®·ÑÀÇ µðÆúÆ®¿Í ´Ù¸¥ °ªÀ» ã¾Æ Àû¿ëÇØ¾ß ÇÑ´Ù.

¿¹¸¦ µé¾î »ö»ó°ªÀº Ori¿Í ºñ±³ÇÏÁö ¾Ê°í »óÀ§ ¹ÙÀÌÆ®°¡ 0ÀÌ ¾Æ´Ñ °æ¿ì, Áï ÄÁÆ®·ÑÀÇ µðÆúÆ®¿Í ´Ù¸¦ °æ¿ì¸¸ »ö»óÀ» ¼³Á¤Çϵµ·Ï ÇÏ¿´´Ù. Option::Init¿¡¼­ ÃʱâÈ­Çϴ ȣ½ºÆ®ÀÇ µðÆúÆ®°¡ ÄÁÆ®·Ñ µðÆúÆ®¿Í ´Ù¸£±â¸¸ ÇÏ¸é »ö»óÀ» ¹«Á¶°Ç º¯°æÇÑ´Ù. ÀÌ ÇÔ¼ö´Â Â÷Àϵ尡 »ý¼ºµÈ Á÷ÈÄ¿¡ È£ÃâµÇ¸ç µû¶ó¼­ ¿É¼Ç º¯°æ ÈÄ »ý¼ºµÇ´Â ¸ðµç ApiEdit´Â Option ±¸Á¶Ã¼ÀÇ ¼³Á¤´ë·Î »ý¼ºµÈ´Ù.

SetSetting°ú ApplyNowÀÇ Äڵ尡 ºñ½ÁÇÏÁö¸¸ µÎ ÇÔ¼ö´Â Àû¿ëÇÏ´Â ´ë»óÀÌ ´Ù¸£´Ù. ApplyNow´Â ÀÌ¹Ì »ý¼ºµÇ¾î ÀÖ´Â ApiEdit¿¡ ´ëÇؼ­ Àû¿ëÇÏ´Â °ÍÀÌ°í SetSettingÀº »õ·Î »ý¼ºµÇ´Â ApiEditÀÇ ¿É¼ÇÀ» º¯°æÇÏ´Â °ÍÀÌ´Ù. Â÷Àϵ尡 »ý¼ºµÇ´Â WM_CRAETE¿¡¼­ ApiEdit¸¦ »ý¼ºÇÑ Á÷ÈÄ¿¡ ÀÌ ÇÔ¼ö¸¦ ºÒ·¯ ÁÖ¸é µÈ´Ù.

 

LRESULT CALLBACK DGChildProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)

{

     switch(iMessage) {

     case WM_CREATE:

          ....

          pSi=new SInfo;

          SetWindowLong(hWnd,0,(LONG)pSi);

          pSi->Ae.Create(0,0,0,0,WS_CHILD | WS_VISIBLE,1,hWnd);

        SetSetting(pSi->Ae);

     ....

 

±Û²Ã ¼±ÅÃÀ» À§ÇØ ÆùÆ® ¿­°Å °á°ú¸¦ °¡Áö´Â arFont ¹è¿­Àº ¸ÞÀÎ À©µµ¿ì°¡ Æı«µÉ ¶§ ÇØÁ¦Çϵµ·Ï ÇÑ´Ù. ¼³Á¤ ´ëÈ­»óÀÚ°¡ ÇÑ ¹øµµ È£ÃâµÇÁö ¾Ê¾Ò´Ù¸é arFont´Â NULL°ªÀ» °¡Áú °ÍÀ̸ç ÀÌ ¶§´Â ¹è¿­À» ÇØÁ¦ÇÏÁö ¾Ê¾Æµµ µÈ´Ù.

 

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

{

    if (arFont)

        free(arFont);

     PostQuitMessage(0);

}

 

ÀÌ·Î½á ¼³Á¤ ´ëÈ­»óÀÚ¿¡ ´ëÇÑ ¸ðµç ÄÚµå ÀÛ¼ºÀÌ ³¡³µ´Ù. ¿©±â±îÁö Äڵ带 ÀÛ¼ºÇÑ ÈÄ ½ÇÇàÇغ¸¸é Á¦´ë·Î µ¿ÀÛÇÒ °ÍÀÌ´Ù. ApiEdit¿Í DangeunÀº ¿©±â¼­ Àû¿ëÇÑ ¿É¼Çº¸´Ù ´õ ¸¹Àº ¿É¼ÇÀ» Á¦°øÇÏ¸ç ¾ÕÀ¸·Î °è¼Ó ¸¸µé¾î ³ª°¥ °ÍÀÌ´Ù. ÀÏ´Ü ¼³Á¤ º¯°æ¿¡ ´ëÇÑ ±âº» »À´ë°¡ ¿Ï¼ºµÇ¾úÀ¸¹Ç·Î Ãß°¡µÇ´Â ¿É¼ÇÀ» ó¸®ÇÏ´Â °ÍÀº ±×¸® ¾î·ÆÁö ¾Ê´Ù. ´ëÈ­»óÀÚ ÇÁ·Î½ÃÀú´Â ´õ ¼Õº¼ °ÍÀÌ ¾ø°í ApplyNow¿Í SetSetting ÇÔ¼ö¿¡ Àû¿ë Äڵ常 Ãß°¡·Î ÀÛ¼ºÇÏ¸é µÈ´Ù.