¶ó. ÅÇÀÇ ¸Þ½ÃÁö ó¸®

ÆÄÀÏÅÇÀº ÆíÁýÁßÀÎ ÆÄÀÏÀÇ ¸ñ·ÏÀ» º¸¿©ÁÖ´Â ÀåÄ¡À̱⵵ ÇÏÁö¸¸ ÆíÁýÇÒ ¹®¼­¸¦ ¼±ÅÃÇÏ´Â ÀåÄ¡À̱⵵ ÇÏ´Ù. »ç¿ëÀÚ°¡ ÅÇÀ» ´©¸¦ ¶§ ÀÌ ÅÇ°ú ´ëÀÀµÇ´Â ¹®¼­¸¦ ã¾Æ È°¼ºÃ¢À» ¹Ù²ã¾ß ÇÑ´Ù. ÅÇ ÇÁ·¹ÀÓ ÇÁ·Î½ÃÀú¿¡ ´ÙÀ½ Äڵ带 ÀÛ¼ºÇÑ´Ù.

 

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

{

     ....

     LPNMHDR hdr;

     int idx;

     TCITEM tie;

     HWND hChild;

 

     switch(iMessage) {

     ....

     case WM_NOTIFY:

          hdr=(LPNMHDR)lParam;

          switch (hdr->code) {

          case TCN_SELCHANGE:

              idx=TabCtrl_GetCurSel(hFileTab);

              tie.mask=TCIF_PARAM;

              TabCtrl_GetItem(hFileTab,idx,&tie);

              hChild=FindChildWithFile((TCHAR *)tie.lParam);

              SendMessage(g_hMDIClient,WM_MDIACTIVATE,(WPARAM)hChild,0);

              break;

          }

          return 0;

 

ÅÇÀÇ ¼±Åà »óÅ°¡ ¹Ù²î¸é TCN_SELCHANGE ÅëÁö ¸Þ½ÃÁö°¡ Àü´ÞµÈ´Ù. À̶§ ¼±ÅÃµÈ ÅÇÀÇ »ç¿ëÀÚ µ¥ÀÌÅÍ(lParam)¿¡ ÀúÀåµÈ ¿ÏÀü °æ·Î¸¦ ²¨³» FindChildWithFile ÇÔ¼ö·Î ÀÌ ÆÄÀÏÀ» ÆíÁýÇÏ°í Àִ âÀ» ã¾Æ È°¼ºÈ­½ÃÄ×´Ù. ÅÇ°ú ´ëÀÀµÇ´Â ¹®¼­°¡ Á¤È®ÇÏ°Ô È°¼ºÈ­µÉ °ÍÀÌ´Ù.

ÅÇÀ» ¼±ÅÃÇϸé È°¼ºÃ¢ÀÌ ¹Ù²î´Âµ¥ ¹Ý´ëÀÇ °æ¿ìµµ ¶È°°ÀÌ Ã³¸®ÇØ¾ß ÇÑ´Ù. Áï È°¼ºÃ¢ÀÌ ¹Ù²î¸é ´ëÀÀµÇ´Â ÅÇÀ» ¼±ÅÃÇØ¾ß ÇÑ´Ù. ¹®¼­Ã¢ÀÌ Æ÷Ä¿½º¸¦ ¹Þ¾ÒÀ» ¶§ ´ëÀÀµÇ´Â ÅÇÀÇ À妽º¸¦ ã¾Æ ¼±ÅÃÇÏ¸é µÈ´Ù.

 

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

{

    int idx;

     ....

     case WM_SETFOCUS:

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

          SetFocus(pSi->Ae.hWnd);

          SetStatusText(0xffff);

        idx=FindFileTab(pSi->NowFile);

        TabCtrl_SetCurSel(hFileTab,idx);

          return 0;

 

ÅÇ¿¡´Â ÆÄÀÏ À̸§°ú ÇÔ²² º¯°æ ¿©ºÎ¸¦ Ç¥½ÃÇÏ´Â À̹ÌÁö°¡ Ç¥½ÃµÇ´Âµ¥ ÀÌ À̹ÌÁöµµ °ü¸® ´ë»óÀÌ´Ù. ÆÄÀÏÀÇ º¯°æ ¿©ºÎ°¡ ¹Ù²î¸é ÅÇÀÇ À̹ÌÁöµµ ¹Ù²ã¾ß ÇÑ´Ù. »ç¿ëÀÚ°¡ ÆÄÀÏÀ» ÆíÁýÇϸé À̹ÌÁöµµ ÆĶõ»ö¿¡¼­ »¡°£»öÀ¸·Î ¹Ù²î¾î¾ß ÇÏ¸ç ½ÇÇàÃë¼Ò¿¡ ÀÇÇØ º¯°æÀÌ Ãë¼ÒµÇ¸é »¡°£»öÀÌ ´Ù½Ã ÆĶõ»öÀ¸·Î ¹Ù²î¾î¾ß ÇÑ´Ù. ÀÌ À̹ÌÁö¸¦ °ü¸®ÇØ¾ß ÇÒ ½ÃÁ¡Àº »óŶõÀÇ ÆÄÆ® 3ÀÌ º¯°æµÉ ¶§¿Í ¿ÏÀüÈ÷ µ¿ÀÏÇÏ´Ù. ±×·¡¼­ »óŶõÀÇ ÅؽºÆ®¸¦ º¯°æÇÒ ¶§ À̹ÌÁöµµ °°ÀÌ º¯°æÇÏ¸é µÈ´Ù.

 

void SetStatusText(int mask)

{

    TCITEM tie;

    int idx;

     ....

     if (mask & 8) {

        tie.mask=TCIF_IMAGE;

          if (pSi->Ae.GetModified()) {

              lstrcpy(Text,"ÆíÁýµÇ¾úÀ½");

           tie.iImage=1;

          } else {

              lstrcpy(Text,"¹ÌÆíÁý");

           tie.iImage=0;

          }

          SendMessage(hStatus, SB_SETTEXT, 3, (LPARAM)Text);

        idx=FindFileTab(pSi->NowFile);

        if (idx!=-1) {

           TabCtrl_SetItem(hFileTab,idx,&tie);

        }

     }

 

ÅؽºÆ®´Â ±×´ë·Î µÎ°í ¹®¼­ÀÇ º¯°æ ¿©ºÎ¿¡ µû¶ó À̹ÌÁö¸¸ ¹Ù²ã ÁÖ¾ú´Ù. À§ÀÇ Äڵ忡¼­ idx°¡ -1ÀÎ °æ¿ì´Â Àý´ë·Î ¾øÀ» °Í °°Áö¸¸ »õ À̸§À¸·Î ÀúÀåÇÒ ¶§´Â ÆÄÀϸíÀÌ ¸ÕÀú ¹Ù²î°í º¯°æÇ÷¡±×°¡ º¯°æµÇ±â ¶§¹®¿¡ ÀϽÃÀûÀ¸·Î ÅÇÀÇ Á¤º¸¿Í ÆÄÀϸíÀÌ ´Ù¸¦ ¼ö°¡ ÀÖ´Ù. ±»ÀÌ -1ÀÎ °æ¿ì¸¦ ±¸ºÐÇÏÁö ¾Ê¾Æµµ µÇÁö¸¸ Á¶±ÝÀÌ¶óµµ ºÒÇÊ¿äÇÑ Ã³¸®´Â »ý·«ÇÏ´Â °ÍÀÌ ÁÁ´Ù.

SetStatusText ÇÔ¼ö´Â º¯°æÇ÷¡±×¿¡ º¯È­°¡ ÀÖÀ» ¶§¸¶´Ù È£ÃâµÇ¹Ç·Î ÆÄÀÏÅÇÀÇ À̹ÌÁö¸¦ ¹Ù²ã Áֱ⿡´Â ÃÖÀûÀÇ Àå¼ÒÀÓÀÌ ºÐ¸íÇÏ´Ù. ÇÏÁö¸¸ ÀÌ ÇÔ¼ö´Â È°¼º â¿¡ ´ëÇؼ­¸¸ ÅëÁö ¸Þ½ÃÁö¸¦ ¹Þ±â ¶§¹®¿¡ ºñÈ°¼ºÃ¢±îÁö ÇѲ¨¹ø¿¡ ÀúÀåÇÏ´Â ¸ðµÎ ÀúÀå(SaveAll) ¸í·É¿¡ ´ëÇؼ­´Â ÆÄÀÏÅÇÀÇ À̹ÌÁö¸¦ Á¦´ë·Î ¹Ù²ã ÁÖÁö ¸øÇÑ´Ù. ¸ðµÎ ÀúÀåÇÒ ¶§´Â °¢ ÆÄÀÏÀÌ ÀúÀåµÉ ¶§¸¶´Ù ÆÄÀÏÅÇÀÇ À̹ÌÁö¸¦ º¯°æÇØ¾ß ÇÑ´Ù. SaveToFile¿¡ ´ÙÀ½ Äڵ带 ÀÛ¼ºÇÑ´Ù.

 

BOOL SaveToFile(HWND hChild,TCHAR *Path)

{

     ....

    TCITEM tie;

    int idx;

 

     ....

    tie.mask=TCIF_IMAGE;

    idx=FindFileTab(Path);

    tie.iImage=0;

    TabCtrl_SetItem(hFileTab,idx,&tie);

 

     return TRUE;

}

 

ÀÌ ÇÔ¼ö´Â ÆÄÀÏÀ» ÀúÀåÇÏ´Â ÃÖÁ¾ ÇÔ¼öÀ̹ǷΠ¿©±â¼­ ÆÄÀÏÅÇÀÇ À̹ÌÁö¸¦ 0¹øÀ¸·Î ¹Ù²Ù¸é ¸ðµÎ ÀúÀå½Ã ÀúÀåµÈ ¸ðµç ÆÄÀÏÀÇ À̹ÌÁö°¡ º¯°æµÈ´Ù. ÀÌÈÄ ÀÚµ¿ÀúÀå ±â´ÉÀÌ Ãß°¡µÇ´õ¶óµµ ´õ ÀÌ»ó ÀúÀå¿¡ ÀÇÇÑ À̹ÌÁö °ü¸®´Â ÇÒ ÇÊ¿ä°¡ ¾øÀ» °ÍÀÌ´Ù.