»ç. ÆíÁý

º¸±â, »ö»ó ÆäÀÌÁö°¡ ÁÖ·Î ÇÁ·Î±×·¥ÀÇ ¿ÜÇü¿¡ °ü·ÃµÈ ¿É¼ÇÀ» ´Ù·ç´Â °Í¿¡ ºñÇØ ÆíÁý ÆäÀÌÁö´Â ÇÁ·Î±×·¥ÀÇ µ¿ÀÛ¿¡ ´ëÇÑ ¿É¼ÇÀ» ´Ù·é´Ù. ´ëÈ­»óÀÚÀÇ ¸ð¾çÀº ´ÙÀ½°ú °°´Ù.

ÅÇ Å©±â¿Í ±× ¿Ü ÆíÁý µ¿ÀÛ¿¡ ´ëÇÑ ¼±Åà ¿©ºÎ¸¦ ÀԷ¹޴ ¸¹Àº üũ¹Ú½ºµéÀÌ ¹èÄ¡µÇ¾î ÀÖ´Ù. ÀÌÁß ÀϺΠ¿É¼ÇÀº ¾ÆÁ÷ ±¸ÇöµÇÁö ¾ÊÀº °ÍµéÀÌ´Ù. ´ëÈ­»óÀÚ ÇÁ·Î½ÃÀúÀÇ ÄÚµå´Â ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÑ´Ù.

 

BOOL CALLBACK EditDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)

{

     HWND hCon;

     int tint;

 

     switch(iMessage)

     {

     case WM_INITDIALOG:

          hCon=GetDlgItem(hDlg,IDC_TABWIDTH);

          SendMessage(hCon,CB_ADDSTRING,0,(LPARAM)"1");

          SendMessage(hCon,CB_ADDSTRING,0,(LPARAM)"2");

          SendMessage(hCon,CB_ADDSTRING,0,(LPARAM)"4");

          SendMessage(hCon,CB_ADDSTRING,0,(LPARAM)"8");

          SendMessage(hCon,CB_ADDSTRING,0,(LPARAM)"16");

 

          hCon=GetDlgItem(hDlg,IDC_UNDOLIMIT);

          SendMessage(hCon,CB_ADDSTRING,0,(LPARAM)"ÃÖÀú(10K)");

          SendMessage(hCon,CB_ADDSTRING,0,(LPARAM)"ÀÛÀ½(100K)");

          SendMessage(hCon,CB_ADDSTRING,0,(LPARAM)"º¸Åë(1M)");

          SendMessage(hCon,CB_ADDSTRING,0,(LPARAM)"Å­(5M)");

          SendMessage(hCon,CB_ADDSTRING,0,(LPARAM)"ÃÖ´ë(10MB)");

 

          hCon=GetDlgItem(hDlg,IDC_FINDDLGPOS);

          SendMessage(hCon,CB_ADDSTRING,0,(LPARAM)"¸ÞÀÎ À©µµ¿ìÀÇ ¿ÞÂÊ À§");

          SendMessage(hCon,CB_ADDSTRING,0,(LPARAM)"¸ÞÀÎ À©µµ¿ìÀÇ ¿À¸¥ÂÊ À§");

          SendMessage(hCon,CB_ADDSTRING,0,(LPARAM)"¸ÞÀÎ À©µµ¿ìÀÇ ¿À¸¥ÂÊ ¾Æ·¡");

          SendMessage(hCon,CB_ADDSTRING,0,(LPARAM)"¸ÞÀÎ À©µµ¿ì Áß¾Ó");

          return TRUE;

     case WM_COMMAND:

          switch (LOWORD(wParam))   {

          case IDC_TABWIDTH:

          case IDC_UNDOLIMIT:

          case IDC_FINDDLGPOS:

              switch (HIWORD(wParam)) {

              case CBN_SELCHANGE:

              case CBN_EDITCHANGE:

                   PropSheet_Changed(GetParent(hDlg),hDlg);

                   break;

              }

              return TRUE;

          case IDC_ALLOWDRAG:

          case IDC_USELINEEND:

          case IDC_INITFIND:

          case IDC_INITNEXTFIND:

          case IDC_SOUNDFINDFAIL:

          case IDC_SPACEFORTAB:

          case IDC_AUTOINDENT:

          case IDC_BLOCKINDENTWITHTAB:

          case IDC_HOMETOFIRSTCHAR:

          case IDC_CALCTABWITHAVG:

              PropSheet_Changed(GetParent(hDlg),hDlg);

              return TRUE;

          }

          break;

     case WM_NOTIFY:

          switch (((LPNMHDR)lParam)->code) {

          case PSN_SETACTIVE:

              g_StartPage=3;

              SetDlgItemInt(hDlg,IDC_TABWIDTH,NewOption.TabWidth,FALSE);

              CheckDlgButton(hDlg,IDC_ALLOWDRAG,NewOption.bAllowDrag ? BST_CHECKED:BST_UNCHECKED);

              CheckDlgButton(hDlg,IDC_USELINEEND,NewOption.bUseLineEnd ? BST_CHECKED:BST_UNCHECKED);

              SendDlgItemMessage(hDlg,IDC_UNDOLIMIT,CB_SETCURSEL,NewOption.UndoLimit,0);

              SendDlgItemMessage(hDlg,IDC_FINDDLGPOS,CB_SETCURSEL,NewOption.FindDlgPos,0);

              CheckDlgButton(hDlg,IDC_INITFIND,NewOption.bInitFind ? BST_CHECKED:BST_UNCHECKED);

              CheckDlgButton(hDlg,IDC_INITNEXTFIND,NewOption.bInitNextFind ? BST_CHECKED:BST_UNCHECKED);

              CheckDlgButton(hDlg,IDC_SOUNDFINDFAIL,NewOption.bSoundFindFail ? BST_CHECKED:BST_UNCHECKED);

                   CheckDlgButton(hDlg,IDC_SPACEFORTAB,NewOption.bSpaceForTab ? BST_CHECKED:BST_UNCHECKED);

                   CheckDlgButton(hDlg,IDC_AUTOINDENT,NewOption.bAutoIndent ? BST_CHECKED:BST_UNCHECKED);

                   CheckDlgButton(hDlg,IDC_BLOCKINDENTWITHTAB,NewOption.bBlockIndentWithTab ? BST_CHECKED:BST_UNCHECKED);

                   CheckDlgButton(hDlg,IDC_HOMETOFIRSTCHAR,NewOption.bHomeToFirstChar ? BST_CHECKED:BST_UNCHECKED);

                   CheckDlgButton(hDlg,IDC_CALCTABWITHAVG,NewOption.bCalcTabWithAvg ? BST_CHECKED:BST_UNCHECKED);

              return TRUE;

          case PSN_APPLY:

              ApplyNow();

              return TRUE;

          case PSN_KILLACTIVE:

              tint=GetDlgItemInt(hDlg,IDC_TABWIDTH,NULL,FALSE);

              if (tint < 1 || tint > 32) {

                   MessageBox(hDlg,"ÅÇÀº 1~32»çÀÌÀÇ °ªÀ» ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù","¾Ë¸²",MB_OK);

                   SetWindowLong(hDlg,DWL_MSGRESULT,TRUE);

                   return TRUE;

              }

 

              NewOption.TabWidth=GetDlgItemInt(hDlg,IDC_TABWIDTH,NULL,FALSE);

              NewOption.bAllowDrag=IsDlgButtonChecked(hDlg,IDC_ALLOWDRAG) ? TRUE:FALSE;

              NewOption.bUseLineEnd=IsDlgButtonChecked(hDlg,IDC_USELINEEND) ? TRUE:FALSE;

              NewOption.UndoLimit=SendDlgItemMessage(hDlg,IDC_UNDOLIMIT,CB_GETCURSEL,0,0);

              NewOption.FindDlgPos=SendDlgItemMessage(hDlg,IDC_FINDDLGPOS,CB_GETCURSEL,0,0);

              NewOption.bInitFind=IsDlgButtonChecked(hDlg,IDC_INITFIND) ? TRUE:FALSE;

              NewOption.bInitNextFind=IsDlgButtonChecked(hDlg,IDC_INITNEXTFIND) ? TRUE:FALSE;

              NewOption.bSoundFindFail=IsDlgButtonChecked(hDlg,IDC_SOUNDFINDFAIL) ? TRUE:FALSE;

              NewOption.bSpaceForTab=IsDlgButtonChecked(hDlg,IDC_SPACEFORTAB) ? TRUE:FALSE;

              NewOption.bAutoIndent=IsDlgButtonChecked(hDlg,IDC_AUTOINDENT) ? TRUE:FALSE;

              NewOption.bBlockIndentWithTab=IsDlgButtonChecked(hDlg,IDC_BLOCKINDENTWITHTAB) ? TRUE:FALSE;

              NewOption.bHomeToFirstChar=IsDlgButtonChecked(hDlg,IDC_HOMETOFIRSTCHAR) ? TRUE:FALSE;

              NewOption.bCalcTabWithAvg=IsDlgButtonChecked(hDlg,IDC_CALCTABWITHAVG) ? TRUE:FALSE;

              return TRUE;

          }

          break;

     }

     return FALSE;

}

 

´ëÈ­»óÀÚ¿¡ ¹èÄ¡µÈ ÄÁÆ®·ÑµéÀÌ ´ëºÎºÐ üũ¹Ú½ºµéÀ̹ǷΠƯº°È÷ ´«¿©°Ü º¼¸¸ÇÑ Äڵ尡 ¾ø´Ù. ¿É¼ÇÀ» ÄÁÆ®·Ñ¿¡ Ç¥½ÃÇÏ°í º¯°æµÈ °ªÀ» ´Ù½Ã ÀоîµéÀÌ´Â ÄÚµåµéÀÌ¸ç ¾Õ¿¡¼­ ¸¸µé¾ú´ø ÆäÀÌÁöµé¿¡ ºñÇØ ÈξÀ ´õ °£´ÜÇÑ ±¸Á¶¸¦ °¡Áø´Ù. ÇÑ ¹ø Á× ÈÈ¾î º¸±â¸¸ Çصµ ¹«½¼ ÄÚµåÀÎÁö ±Ý¹æ ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù.

ÀÌ ¿Ü¿¡ ¹®¹ý, Àμâ ÆäÀÌÁöµµ Àִµ¥ ÀÌ ÆäÀÌÁö´Â ¸®¼Ò½º¸¸ ¸¸µé¾îÁ® ÀÖ°í ¾ÆÁ÷ ±â´É ±¸ÇöÀÌ µÇÁö ¾Ê¾ÒÀ¸¹Ç·Î ¿É¼Ç¿¡ °ü·ÃµÈ Äڵ嵵 ÀÛ¼ºµÇ¾î ÀÖÁö ¾Ê´Ù. ¾î¶² ¸ð¾çÀ» °¡Áö´Â ÆäÀÌÁöÀÎÁö ±¸°æÀ̳ª ÀÏ´Ü Çغ¸µµ·Ï ÇÏÀÚ.

 

ÄÁÆ®·Ñ¸¸ ÀÖ°í Äڵ尡 ¾ø±â ¶§¹®¿¡ °ú¿¬ ½ä··ÇÏ´Ù. ´ëÈ­»óÀÚ ÇÁ·Î½ÃÀúµµ Çü½Ä¸¸ °®Ãß°í ÀÖÀ¸¸ç ½ÇÁúÀûÀÎ ÄÚµå´Â ¾ÆÁ÷ ÀÛ¼ºµÇ¾î ÀÖÁö ¾Ê´Ù.

 

BOOL CALLBACK SyntaxDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)

{

     switch(iMessage)

     {

     case WM_INITDIALOG:

          return TRUE;

     case WM_NOTIFY:

          LPNMHDR hdr;

          hdr=(LPNMHDR)lParam;

          switch (hdr->code) {

          case PSN_SETACTIVE:

              g_StartPage=4;

              return TRUE;

          case PSN_APPLY:

              return TRUE;

          case PSN_KILLACTIVE:

              return TRUE;

          }

          break;

     }

     return FALSE;

}

 

BOOL CALLBACK PrintDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)

{

     switch(iMessage)

     {

     case WM_INITDIALOG:

          return TRUE;

     case WM_NOTIFY:

          LPNMHDR hdr;

          hdr=(LPNMHDR)lParam;

          switch (hdr->code) {

          case PSN_SETACTIVE:

              g_StartPage=5;

              return TRUE;

          case PSN_APPLY:

              return TRUE;

          case PSN_KILLACTIVE:

              return TRUE;

          }

          break;

     }

     return FALSE;

}

 

ÀÌ µÎ ÇÔ¼öÀÇ ÄÚµå´Â ÇÑÂü ÈÄ¿¡ õõÈ÷ ä¿öÁú °ÍÀÌ´Ù. ±×·¡µµ ºó ´ëÈ­»óÀÚ³ª¸¶ ÀÖ¾î¾ß ÇÁ·ÎÆÛƼ ½ÃÆ®°¡ ÃʱâÈ­¸¦ ÇÒ ¼ö ÀÖÀ¸¹Ç·Î Äڵ忡´Â ÀÏ´Ü Æ÷ÇÔ½ÃÄÑ µÎµµ·Ï ÇÏÀÚ.

 

¿©±â±îÁö ¼³Á¤ ´ëÈ­»óÀÚ¸¦ ÀÛ¼ºÇß´Ù. ¸¹Àº ¾çÀÇ Äڵ尡 Ãß°¡µÇ¾ú´Âµ¥ ÀÌ ´ëÈ­»óÀÚ°¡ ÇÏ´Â ÀÏÀº ¼³Á¤À» Á÷Á¢ ¹Ù²Ù´Â °Íµµ ¾Æ´Ï°í º¯°æµÈ ¿É¼ÇÀ» Àû¿ëÇÏ´Â °Íµµ ¾Æ´Ï´Ù. ¿À·ÎÁö OptionÀÇ »çº»ÀÎ NewOptionÀÇ °ªÀ» º¸¿©ÁÖ°í »ç¿ëÀÚ°¡ ÀÌ ±¸Á¶Ã¼ÀÇ °ªÀ» Æí¸®ÇÏ°Ô º¯°æÇϵµ·Ï ÇÏ´Â °ÍÀÌ ÇÏ´Â ÀÏÀÇ ÀüºÎÀÌ´Ù. ±¸Á¶Ã¼°¡ Å©´Ù º¸´Ï ÇÊ¿äÇÑ ÄÁÆ®·ÑÀÌ ¸¹°í µû¶ó¼­ ÄÁÆ®·Ñ ÀÔÃâ·Â Äڵ尡 ¸¹À» »ÓÀÌÁö ÇÏ´Â ÀÏÀº ¾ÆÁÖ ´Ü¼øÇÏ´Ù.