¶ó. ´ëÈ­»óÀÚ È£Ãâ

°Ë»ö ¿É¼ÇÀ» ÀԷ¹޴ ´ëÈ­»óÀÚ¿Í Æú´õ °Ë»ö ÇÔ¼ö±îÁö ÀÛ¼ºÇßÀ¸¹Ç·Î ÀÌÁ¦ ÆÄÀÏ¿¡¼­ ã±â ÇÔ¼ö¸¦ ±¸ÇöÇغ¸ÀÚ. °Ë»ö ¸Þ´º¿¡ ÀÖ´Â ¡®ÆÄÀÏ¿¡¼­ ã±â¡¯, ¡®ÆÄÀÏ¿¡¼­ ¹Ù²Ù±â¡¯ ¸Þ´ºÇ׸ñÀ» ¼±ÅÃÇÏ¸é °¢ ´ëÈ­»óÀÚ¸¦ È£ÃâÇÑ´Ù.

 

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

{

     ....

     case IDM_SEARCH_FILES:

          if (DialogBox(g_hInst,MAKEINTRESOURCE(IDD_FILEFIND),hWnd,FileFindDlgProc)==IDOK) {

              FindOrReplaceInFiles(FALSE);

          }

          break;

     case IDM_SEARCH_RFILES:

          if (DialogBox(g_hInst,MAKEINTRESOURCE(IDD_FILEREPLACE),hWnd,FileFindDlgProc)==IDOK) {

              FindOrReplaceInFiles(TRUE);

          }

          break;

 

ÆÄÀÏ°Ë»ö ´ëÈ­»óÀÚ¸¦ ¿­¾î ³õÀº ä·Î ÆíÁýÀ» ÇÏÁö´Â ¾Ê±â ¶§¹®¿¡ ÀÌ ´ëÈ­»óÀÚµéÀº ¸ðµ¨¸®½ºÀÏ ÇÊ¿ä°¡ ¾ø´Ù. CreateDialog ÇÔ¼ö·Î ´ëÈ­»óÀÚ¸¦ ¸¸µå´Â ´ë½Å DialogBox ÇÔ¼ö·Î ¸ð´ÞÇüÀ¸·Î ´ëÈ­»óÀÚ¸¦ ½ÇÇàÇß´Ù. ´ëÈ­»óÀÚ ÇÁ·Î½ÃÀú¿¡¼­ »ç¿ëÀÚ°¡ ã±â ¹öÆ°À» Ŭ¸¯Çϸé IDOK¸¦ ¸®ÅÏÇÒ °ÍÀ̸ç À̶§ ÆÄÀÏ°Ë»öÀ» ½ÃÀÛÇÏ¸é µÈ´Ù. ÆÄÀÏ Ã£±â¿Í ¹Ù²Ù±â´Â ÀýÂ÷°¡ ºñ½ÁÇϱ⠶§¹®¿¡ ÇÑ ÇÔ¼ö°¡ µÎ ±â´ÉÀ» ¸ðµÎ Á¦°øÇ쵂 Àμö¸¸ ´Ù¸£°Ô ÇÏ¿´´Ù.

 

void FindOrReplaceInFiles(BOOL bReplace)

{

     BOOL bDeep;

 

     if ((lstrlen(arFind[0].Get(0))==0) ||

          (bReplace && lstrlen(arFind[1].Get(0))==0) ||

          (lstrlen(arFind[2].Get(0))==0 || _access(arFind[2].Get(0),0)!=0) ||

          (lstrlen(arFind[3].Get(0))==0)) {

          return;

     }

 

     if (FindFlag & AE_FIND_RECURSIVE) {

          bDeep=TRUE;

     } else {

          bDeep=FALSE;

     }

 

     TotalFind=0;

     if (Option.bShowOutput==FALSE) {

          Option.bShowOutput=TRUE;

          Relayout();

     }

     SendMessage(hList,LVM_DELETEALLITEMS,0,0);

 

     if (bReplace) {

          lstrcpy(LastFIF,arFind[1].Get(0));

          FindInFiles(arFind[2].Get(0),arFind[3].Get(0),FIF_DEEP | FIF_INCHID,

              OnReplaceFile,(LPVOID)NULL);

     } else {

          lstrcpy(LastFIF,arFind[0].Get(0));

          FindInFiles(arFind[2].Get(0),arFind[3].Get(0),FIF_DEEP | FIF_INCHID,

              OnFindFile,(LPVOID)NULL);

     }

}

 

bReplace Àμö°¡ TRUEÀÌ¸é ¹Ù²Ù±â¸¦ ÇÏ°í FALSEÀ̸é ã±â¸¦ ÇÑ´Ù. ¸ÕÀú Àü¿ªº¯¼ö¿¡ ¼³Á¤µÈ ¿É¼ÇÀÌ À¯È¿ÇÑÁö °Ë»çÇغ¸´Âµ¥ ãÀ» ³»¿ëÀÌ ÀԷµÇÁö ¾Ê¾Ò´Ù°Å³ª ½ÃÀÛ Æú´õ°¡ À¯È¿ÇÏÁö ¾ÊÀ¸¸é °Ë»öÀ» ½ÃÀÛÇÒ ¼ö ¾øÀ¸¹Ç·Î ¸®ÅÏÇØ ¹ö¸°´Ù. TotalFind´Â ÃÑ °Ë»öµÈ °³¼ö¸¦ °¡Áö´Â Àü¿ªº¯¼öÀε¥ °Ë»öÀ» ½ÃÀÛÇϱâ Àü¿¡ 0À¸·Î ÃʱâÈ­µÈ´Ù. °Ë»ö°á°úâÀÌ ¼û°ÜÁø »óÅÂÀÌ¸é °­Á¦·Î º¸À̵µ·Ï ÇÏ¸ç °á°úâÀÇ ¸®½ºÆ® ºä¿¡ ÀÌÀü °Ë»ö°á°ú°¡ ÀÖÀ¸¸é ¸ðµÎ ºñ¿ìµµ·Ï ÇÏ¿© »õ·Î¿î °Ë»ö Áغñ¸¦ ÇÑ´Ù.

°Ë»öÀ» ½ÃÀÛÇϱâ Àü¿¡ °Ë»ö ´ë»ó ´Ü¾î ¶Ç´Â ¹Ù²Û ÈÄÀÇ ´Ü¾î¸¦ LastFIF Àü¿ªº¯¼ö¿¡ ¹Ì¸® Á¶»çÇسõ´Â´Ù. ÀÌ ¹®ÀÚ¿­Àº °Ë»ö°á°úâ¿¡¼­ °Ë»ö°á°ú¸¦ ã¾Æ°¥ ¶§ »ç¿ëµÈ´Ù. ãÀ» ³»¿ë ¹®ÀÚ¿­Àº arFind[0]ÀÇ Ã³À½¿¡ ÀúÀåµÇ´Âµ¥ ÀÌ È÷½ºÅ丮´Â ÆÄÀÏ Ã£±â»Ó¸¸ ¾Æ´Ï¶ó ¹®¼­ ã±â¿¡¼­µµ °øÀ¯ÇÏ°í ÀÖ´Ù. µû¶ó¼­ ÆÄÀÏ°Ë»ö ÈÄ ¹®¼­ ã±â ¸í·ÉÀ» ½ÇÇàÇÏ¸é °á°úâÀÇ °Ë»ö°á°ú°¡ ¾î¶² ¹®ÀÚ¿­¿¡ ´ëÇÑ °Ë»ö°á°úÀÎÁö¸¦ ¾Ë ¼ö ¾ø°Ô µÇ¹Ç·Î µû·Î ÀúÀåÇصξî¾ß ÇÑ´Ù.

ÀÌ ¸ðµç Á¡°Ë°ú Áغñ¸¦ ¸¶Ä£ ÈÄ FindInFiles ÇÔ¼ö¸¦ È£ÃâÇÔÀ¸·Î½á ºñ·Î¼Ò ÆÄÀÏ°Ë»öÀ» ½ÃÀÛÇÑ´Ù. ã±â ¸í·ÉÀ̳ª ¹Ù²Ù±â ¸í·ÉÀ̳ª Æú´õ¸¦ °Ë»öÇÏ´Â ÀýÂ÷´Â µ¿ÀÏÇϹǷΠµÑ ´Ù µ¿ÀÏÇÑ Àμö·Î FindInFiles ÇÔ¼ö¸¦ È£ÃâÇÏ¸é µÈ´Ù. ´Ü, Á¶°Ç¿¡ ¸Â´Â ÆÄÀÏÀ» ã¾ÒÀ» ¶§ ÀÌ ÆÄÀÏÀ» ¾î¶»°Ô ó¸®ÇÒ °ÍÀÎÁö¸¦ ÁöÁ¤ÇÏ´Â Äݹé ÇÔ¼ö¸¸ ´Ù¸¦ »ÓÀÌ´Ù. OnFindFile ÇÔ¼ö´Â ÆÄÀÏ¿¡¼­ ¹®ÀÚ¿­À» ã¾ÆÁÙ °ÍÀÌ°í OnReplaceFile ÇÔ¼ö´Â ÆÄÀÏ¿¡¼­ ¹®ÀÚ¿­À» ¹Ù²Ü °ÍÀÓÀ» ½±°Ô À¯ÃßÇÒ ¼ö ÀÖ´Ù. ÀÌ µÎ ÇÔ¼ö´Â Àá½Ã ÈÄ¿¡ ÀÛ¼ºÇÏ°Ô µÉ °ÍÀÌ´Ù.

¿©±â±îÁö ÆÄÀÏ¿¡¼­ ã±â¿Í ¹Ù²Ù±â¸¦ ±¸ÇöÇÏ´Â ¿©·¯ ´Ü°èÀÇ ÇÔ¼öµéÀ» ÀÛ¼ºÇØ ¿Ô´Âµ¥ ÀÌ ÇÔ¼öµéÀÇ ½ÇÇà °úÁ¤À» ±×¸²À¸·Î Á¤¸®Çغ¸ÀÚ¸é ´ÙÀ½°ú °°ÀÌ ±×¸± ¼ö ÀÖ´Ù.

ÀÌ·¸°Ô È£Ãâ ±¸Á¶°¡ º¹ÀâÇÑ ÀÌÀ¯´Â ÆÄÀÏ¿¡¼­ ã±â ¹× ¹Ù²Ù±â°¡ ¿É¼ÇÀÇ ÀÔ·Â, °Ë»ö Áغñ, Æú´õ °Ë»ö °úÁ¤ÀÌ µ¿ÀÏÇϹǷΠ´ëºÎºÐÀÇ ·çƾÀ» °øÀ¯ÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. ÆÄÀÏÀ» ã¾ÒÀ» ¶§ ±¸Ã¼ÀûÀ¸·Î ¾î¶² µ¿ÀÛÀ» ÇÒ °ÍÀΰ¡¸¸ ´Þ¶óÁö¹Ç·Î ÀÌ µ¿ÀÛ¸¸ Äݹé ÇÔ¼ö·Î ó¸®Çϵµ·Ï ÇÏ¿´´Ù.