°¡. ã¾Æ°¡±â

ÆÄÀÏ¿¡¼­ ¹®ÀÚ¿­À» °Ë»öÇÏ´Â ¸ñÀûÀº ƯÁ¤ ¹®ÀÚ¿­ÀÇ Á¸Àç ¿©ºÎ¸¦ È®ÀÎÇÏ°íÀÚ ÇÏ´Â ¸ñÀûº¸´Ù ±× ¹®ÀÚ¿­ÀÌ ÀÖ´Â ÆÄÀÏÀ» ¿­¾î¼­ ÆíÁýÇÏ°íÀÚ ÇÏ´Â ¸ñÀûÀÌ ´õ Å©´Ù. µû¶ó¼­ °Ë»ö°á°úâÀº °Ë»ö ¹®ÀÚ¿­À» °¡Áø ÆÄÀÏÀ» Áï½Ã ¿­¾î ÁÙ ¼ö ÀÖ´Â ¼­ºñ½º¸¦ ÇØ¾ß ÇÏ¸ç ¹®ÀÚ¿­ÀÌ ÀÖ´Â À§Ä¡·Î À̵¿ÇÏ¸é ´õ¿í ÁÁ´Ù. °Ë»ö°á°úâ¿¡ ÀÌ ±â´ÉÀ» ÀÛ¼ºÇغ¸ÀÚ.

°Ë»ö °á°ú´Â ¸®½ºÆ® ºä ÄÁÆ®·Ñ¿¡ º¸°í¼­ ÇüÅ·ΠÃâ·ÂµÇ¾î ÀÖÀ¸¹Ç·Î ¸®½ºÆ® ºä ÄÁÆ®·ÑÀÇ ´õºíŬ¸¯ ÅëÁö ¸Þ½ÃÁö¿¡¼­ À̸¦ ó¸®ÇÏ¸é µÈ´Ù. DGOutputProc¿¡ ´ÙÀ½ ÅëÁö ¸Þ½ÃÁö¸¦ ó¸®ÇÏ´Â Äڵ带 ÀÛ¼ºÇϵµ·Ï ÇÏÀÚ.

 

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

{

     switch(iMessage) {

          ....

    case WM_NOTIFY:

        LPNMHDR hdr;

        LPNMLISTVIEW nlv;

        hdr=(LPNMHDR)lParam;

        nlv=(LPNMLISTVIEW)lParam;

        LPNMITEMACTIVATE nia;

 

        if (hdr->hwndFrom == hList) {

           switch (hdr->code) {

           case NM_DBLCLK:

               nia = (LPNMITEMACTIVATE)lParam;

               if (nia->iItem != -1) {

                   OpenFileFromOutput(nia->iItem);

               }

               return TRUE;

           }

        }

        break;

     }

     return(DefWindowProc(hWnd,iMessage,wParam,lParam));

}

 

´õºíŬ¸¯µÈ Ç׸ñÀÇ À妽º¸¦ ±¸Çϸé ÀÌ Ç׸ñÀ¸·ÎºÎÅÍ °Ë»öµÈ ÆÄÀÏ°ú °Ë»ö À§Ä¡¸¦ ±¸ÇÒ ¼ö ÀÖ´Ù. °Ë»ö°á°ú·ÎºÎÅÍ À妽º¸¦ Àü´Þ¹Þ¾Æ ÆÄÀÏÀ» ¿­¾îÁÖ´Â ÇÔ¼ö¸¦ ÀÛ¼ºÇÑ´Ù.

 

void OpenFileFromOutput(int idx)

{

     TCHAR Text[MAX_PATH];

     TCHAR Path[MAX_PATH];

     int line,col;

     int toff;

     TCHAR *p;

     HWND hActive;

     SInfo *pSi;

 

     ListView_GetItemText(hList,idx,1,Text,MAX_PATH);

     if (FindFlag & AE_FIND_SHORTPATH) {

          wsprintf(Path,"%s\\%s",arFind[2].Get(0),Text);

     } else {

          lstrcpy(Path,Text);

     }

 

     p=strrchr(Path,¡¯,¡¯);

     col=atoi(p+1)-1;

     p=strrchr(Path,¡¯(¡®);

     line=atoi(p+1)-1;

     *p=0;

 

     if (OpenFromFile(Path)==FALSE) {

          return;

     }

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

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

     pSi->Ae.GotoLine(line,col,1);

     toff=pSi->Ae.GetOffset();

     pSi->Ae.SetSelect(toff,toff+lstrlen(LastFIF),TRUE);

}

 

¸®½ºÆ® ºäÀÇ µÎ ¹ø° Ä÷³(1¹ø° Ä÷³)¿¡´Â °Ë»öµÈ ÆÄÀÏÀÇ °æ·Î¿Í À§Ä¡°¡ ¹®ÀÚ¿­ ÇüÅ·ΠÀúÀåµÇ¾î Àִµ¥ ÀÌ ¹®ÀÚ¿­À» Çؼ®ÇÏ¸é ¿­¾î¾ß ÇÒ ÆÄÀÏ°ú À̵¿ÇØ¾ß ÇÒ À§Ä¡¸¦ Á¤È®ÇÏ°Ô ±¸ÇÒ ¼ö ÀÖ´Ù. ÆÄÀÏÀÇ °æ·Î¸¦ ±¸ÇÑ ÈÄ OpenFromFile ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ÆÄÀÏÀ» ¿­¾ú´Ù. OpenFromFileÀº ÀÌ¹Ì ¿­¸° ÆÄÀÏÀÎ °æ¿ì Æ÷Ä¿½º¸¸ À̵¿½ÃÄÑ ÁÖ¸ç MRU¿¡µµ µî·ÏÇÑ´Ù.

ÆÄÀÏÀ» ¿¬ ÈÄ line ÁÙÀÇ col Ä­À¸·Î À̵¿ÇÏ°í °Ë»ö ¹®ÀÚ¿­À» ¼±ÅÃÇÏ¿© ¾î¶² ¹®ÀÚ¿­ÀÌ °Ë»öµÇ¾ú´ÂÁö Á¤È®ÇÏ°Ô º¸¿©ÁØ´Ù. ÀÌÁ¦ ÆÄÀÏ¿¡ ¹®ÀÚ¿­À» °Ë»öÇÑ ÈÄ °Ë»ö°á°ú¸¦ ´õºíŬ¸¯Çϸé Áï½Ã ÆÄÀÏÀ» ¿­¾î ÁÖ°í °Ë»ö ¹®ÀÚ¿­ÀÌ ÀÖ´Â À§Ä¡·Î À̵¿ÇÒ °ÍÀÌ´Ù. ÀÌ ±â´ÉÀº ºñ±³Àû Àß µ¿ÀÛÇÏÁö¸¸ ÇÑ °¡Áö ¹ö±×°¡ ÀÖ´Ù.

¸¸¾à ÆÄÀÏ°Ë»öÀ» ÇÑ ÈÄ ´Ù¸¥ ÆíÁý±â·Î ÀÌ ÆÄÀÏÀ» ÆíÁýÇعö¸®¸é °Ë»ö°á°ú·ÎºÎÅÍ °Ë»öµÈ À§Ä¡¸¦ Á¦´ë·Î ã¾Æ°¥ ¼ö°¡ ¾ø´Ù. ¿¹¸¦ µé¾î (10,20)ÀÇ À§Ä¡¿¡¼­ ¹®ÀÚ¿­À» ã¾Ò´Âµ¥ ÀÌ ÆÄÀÏÀÌ ÆíÁýµÇ¾î ¹®ÀÚ¿­ÀÇ À§Ä¡°¡ (12,25)·Î À̵¿µÇ¾î ¹ö·È´Ù¸é °Ë»ö°á°úâÀÌ °¡Áö°í ÀÖ´Â (10,20) À̶ó´Â À§Ä¡´Â ¹«È¿°¡ µÈ´Ù. »Ó¸¸ ¾Æ´Ï¶ó ÆíÁýµÈ ÈÄ 20Ä÷³ÀÌ ÇѱÛÀÇ °æ°è¿¡ °ÉÄ¡°Ô µÇ¸é ÇÁ·Î±×·¥ÀÌ Á×À» ¼öµµ ÀÖ´Ù. ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ·Á¸é ¸î °³ÀÇ ÇÔ¼ö±ºÀÌ ´õ ÇÊ¿äÇϹǷΠÀϽÃÀûÀÎ ³ë¿î ¹ö±×·Î ³²°Ü ³õµµ·Ï ÇÑ´Ù.