¶ó. °Ë»ö °ü·Ã ¿É¼Ç

¿©±â¼­ ¸»ÇÏ´Â °Ë»ö °ü·Ã ¿É¼ÇÀº ´ë¼Ò¹®ÀÚ ±¸ºÐ, °Ë»ö ¹æÇâ µîÀÇ °Ë»ö½Ã Àû¿ëµÇ´Â ¿É¼ÇÀÌ ¾Æ´Ï´Ù. °Ë»ö ¹æ½ÄÀ» ÁöÁ¤ÇÏ´Â ¿É¼Ç(FindFlag)µéÀº ã±â/¹Ù²Ù±â ´ëÈ­»óÀÚ¿¡¼­ Á÷Á¢ º¯°æÇÏ°í Á¶Á¤ÇÒ ¼ö ÀÖÁö¸¸ ¿©±â¼­ ¸»ÇÏ´Â °Ë»ö °ü·Ã ¿É¼ÇµéÀº ã±â ´ëÈ­»óÀÚ°¡ ¿­¸®±â Àü¿¡ Àû¿ëµÇ¾î¾ß ÇÏ´Â °ÍµéÀÌ´Ù. ã±â ´ëÈ­»óÀÚ ÃʱâÈ­¿Í °ü·ÃµÈ ¿É¼ÇÀ̱⠶§¹®¿¡ ã±â ´ëÈ­»óÀÚ¿¡¼­´Â ÀÌ ¿É¼ÇÀ» Á¶Á¤ÇÒ ¼ö ¾øÀ¸¸ç ±âº» ¼³Á¤ ´ëÈ­»óÀÚ¿¡¼­ ÀÌ ¿É¼ÇµéÀ» Á¶Á¤ÇØ¾ß ÇÑ´Ù. SOption ±¸Á¶Ã¼¿¡ µÎ °³ÀÇ °Ë»ö °ü·Ã ¿É¼Ç º¯¼ö°¡ Æ÷ÇԵǾî ÀÖ´Ù.

 

struct SOption

{

     ....

     BOOL bInitFind;

     BOOL bInitNextFind;

 

void SOption::Init()

{

     bInitFind=TRUE;

     bInitNextFind=FALSE;

 

ÀÌ µÎ ¿É¼ÇÀº ¾à°£ ¼³¸íÀÌ ÇÊ¿äÇÏ´Ù. bInitFind´Â ã±â ´ëÈ­»óÀÚÀÇ Ã£À» ³»¿ë ÄÞº¸¹Ú½º¸¦ ÇöÀç ij·µ À§Ä¡ÀÇ ´Ü¾î ¶Ç´Â ¼±Åÿµ¿ªÀ¸·Î ÃʱâÈ­ÇÒ °ÍÀΰ¡¸¦ ÁöÁ¤ÇÑ´Ù. ÀÌ °ªÀÌ TRUEÀ̸é ã±â ´ëÈ­»óÀÚ°¡ ¿­¸± ¶§ ij·µ À§Ä¡ÀÇ ´Ü¾î¸¦ ¹Ì¸® ¼±ÅÃÇϸç FALSEÀ̸é Ç×»ó ¸¶Áö¸· °Ë»öÇÑ ´Ü¾î(arFind[0].Get(0))¸¦ ´ë»óÀ¸·Î ÇÑ´Ù. ãÀ» ´ë»óÀÌ Ä³·µ À§Ä¡¿¡ ÀÖÀ» È®·üÀÌ ³ô±â ¶§¹®¿¡ ÀÌ ¿É¼ÇÀÇ µðÆúÆ®°ªÀº TRUE·Î ÃʱâÈ­ÇÏ¿´´Ù.

bInitNextFind´Â ´ÙÀ½ ã±â, ÀÌÀü ã±â ´ë»óÀ» µ¿ÀÏÇÑ ¹æ½ÄÀ¸·Î ÃʱâÈ­ÇÒ °ÍÀΰ¡¸¦ ÁöÁ¤ÇÑ´Ù. ÀÌ·¸°Ô µÇ¸é ´ÙÀ½ ã±â(<F3>)´Â »ç½Ç»ó ´ÙÀ½ ´Ü¾î ã±â(<Ctrl+F3>)¿Í ±â´ÉÀÌ °°¾ÆÁø´Ù. ´Ü¾î À§¿¡¼­ ¶Ç´Â °Ë»öÇÒ ´ë»óÀ» ¼±ÅÃÇسõ°í ¹Ù·Î <F3>À» ´©¸£¸é ´ÙÀ½ À§Ä¡¸¦ ã¾Æ ÁֹǷΠÆí¸®ÇÏ´Ù. ÀÌ ¿É¼ÇÀÌ ¼±ÅõǾî ÀÖ´õ¶óµµ °Ë»ö ÈÄ ´ÙÀ½ ã±â¿¡ º° ¹®Á¦´Â ¾ø´Ù. ¿Ö³ÄÇÏ¸é °Ë»ö°á°ú°¡ ÀÌ¹Ì ¼±ÅõǾî ÀÖ´Â »óÅ¿¡¼­ ÀÌ ¸í·ÉÀ» »ç¿ëÇÏ´Â °æ¿ì°¡ ¸¹±â ¶§¹®ÀÌ´Ù. ÇÏÁö¸¸ °Ë»ö ÈÄ À̵¿ÇÏ´Ù°¡ ´ÙÀ½ °Ë»ö À§Ä¡·Î °¡°íÀÚ ÇÒ ¶§´Â ÀÌ·± µ¿ÀÛÀÌ ºÒÆíÇÒ ¼öµµ Àֱ⠶§¹®¿¡ µðÆúÆ®°ªÀº FALSEÀÌ´Ù.

µÎ ¿É¼ÇÀÇ Àû¿ëÀº ¾ÆÁÖ °£´ÜÇÏ´Ù. bInitFind´Â ´ëÈ­»óÀÚ°¡ ¿­¸± ¶§ È°¼ºÃ¢ÀÇ ÇöÀç ´Ü¾î¸¦ °¡Á®¿Í ÄÞº¸¹Ú½º¿¡ ´ëÀÔÇϱ⸸ ÇÏ¸é µÈ´Ù.

 

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

{

    HWND hActive;

    SInfo *pSi;

    int s,e;

     ....

     switch(iMessage)

     {

     case WM_INITDIALOG:

          ....

          RefillHistory(GetDlgItem(hDlg,IDC_FIND_WHAT),arFind[0]);

        if (Option.bInitFind) {

           hActive=(HWND)SendMessage(g_hMDIClient,WM_MDIGETACTIVE,0,NULL);

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

           pSi->Ae.GetSelect(s,e);

           if (s==e) {

               pSi->Ae.GetNowWord(pSi->Ae.GetOffset(),s,e);

           }

           if (abs(s-e) <= 255 && abs(s-e) > 0) {

               pSi->Ae.GetText(szTemp,256,s,e);

               SetDlgItemText(hDlg,IDC_FIND_WHAT,szTemp);

           }

        }

          RefillHistory(GetDlgItem(hDlg,IDC_FIND_TO),arFind[1]);

          SendMessage(GetDlgItem(hDlg,IDC_FIND_WHAT), CB_LIMITTEXT, (WPARAM)255, 0);

          SendMessage(GetDlgItem(hDlg,IDC_FIND_TO), CB_LIMITTEXT, (WPARAM)255, 0);

          SendMessage(hDlg,WM_COMMAND,MAKEWPARAM(IDC_FIND_WHAT,CBN_EDITCHANGE),0);

          return TRUE;

          ....

 

RefillHistory ÇÔ¼ö¿¡ ÀÇÇØ Ã£À» ³»¿ë ÄÞº¸¹Ú½º¿¡ arFind[0] È÷½ºÅ丮 ¸ñ·ÏÀÌ ´ëÀԵǴµ¥ ÀÌ ¸ñ·ÏÀÇ Ã¹ ¹ø° Ç׸ñÀ» ¹«½ÃÇÏ°í È°¼ºÃ¢ÀÇ ¼±ÅÃµÈ ´Ü¾î, ¶Ç´Â ÇöÀç ´Ü¾î¸¦ °¡Á®¿À´Â °ÍÀÌ´Ù. bInitNextFind´Â ´õ °£´ÜÇÏ´Ù. F3=Ctrl+F3, Shift+F3=Ctrl+Shift+F3°ú °°¾ÆÁö¹Ç·Î ¸Þ½ÃÁö¸¸ ¹Ù²ã¼­ º¸³»ÁÖ¸é µÈ´Ù.

 

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

{

     ....

     case IDM_SEARCH_NEXT:

        if (Option.bInitNextFind) {

           SendMessage(hWnd,WM_COMMAND,MAKEWPARAM(IDM_SEARCH_WORD,0),0);

          } else if (lstrlen(arFind[0].Get(0))) {

              tFlag=FindFlag;

              tFlag &= ~AE_FIND_UP;

              if (pSi->Ae.FindText(-1,arFind[0].Get(0), tFlag) == FALSE) {

                   MessageBox(hWnd,"ã´Â ¹®ÀÚ¿­ÀÌ ¾ø½À´Ï´Ù.","¾Ë¸²",MB_OK);

              }

        }

          break;

     case IDM_SEARCH_PREV:

        if (Option.bInitNextFind) {

           SendMessage(hWnd,WM_COMMAND,MAKEWPARAM(IDM_SEARCH_WORDUP,0),0);

          } else if (lstrlen(arFind[0].Get(0))) {

              tFlag=FindFlag;

              tFlag |= AE_FIND_UP;

              if (pSi->Ae.FindText(-1,arFind[0].Get(0), tFlag) == FALSE) {

                   MessageBox(hWnd,"ã´Â ¹®ÀÚ¿­ÀÌ ¾ø½À´Ï´Ù.","¾Ë¸²",MB_OK);

              }

        }

          break;

 

¼³Á¤ ´ëÈ­»óÀÚ¿¡´Â ÀÌ¹Ì ÀÌ ¿É¼ÇÀ» Á¶Á¤ÇÒ ¼ö ÀÖµµ·Ï ÇÁ·Î±×·¡¹ÖµÇ¾î ÀÖÀ¸¸ç ÀÌ ¿É¼ÇÀÌ ¹Ù²ï´Ù°í Çؼ­ Áï½Ã ¾î¶² Á¶Ä¡¸¦ ÇÒ ÇÊ¿ä´Â ¾øÀ¸¹Ç·Î ApplyNow¿¡¼­´Â ¾Æ¹« °Íµµ ÇÒ ÇÊ¿ä°¡ ¾ø´Ù.