´Ù. ÀÌÀü ·¹ÄÚµå ÆíÁý½Ã

ArrangeModified ÇÔ¼öÀÇ Á¶°Ç¹®Àº Ç×»ó Á¤È®ÇÏÁö ¾ÊÀº ¹®Á¦°¡ Àִµ¥ ´ÙÀ½°ú °°Àº °æ¿ì¿¡´Â ¹®¼­°¡ º¯°æµÇ¾ú´Âµ¥ º¯°æµÇÁö ¾ÊÀº °ÍÀ¸·Î ¿ÀÆÇÇÏ°Ô µÈ´Ù.

ù ¹ø° ±×¸²Àº ¾Õ ¿¹ÀÇ ´Ù¼¸ ¹ø° ±×¸²°ú °°Àº »óÅÂÀÌ´Ù. ÀÌ »óÅ¿¡¼­ <Ctrl+Z>¸¦ µÎ ¹ø ´­·¯ ¡°¸¶¡±¿Í ¡°³ª ¡±ÀÇ ÀÔ·ÂÀ» Ãë¼ÒÇÏ¿´´Ù. ±×¸®°í ¡°¹Ù ¡±¸¦ »õ·Î ÀÔ·ÂÇÏ¸é ¼¼ ¹ø° ±×¸²°ú °°Àº »óÅ°¡ µÈ´Ù. º¸´Ù½ÃÇÇ nowur°ú saveurÀÌ °°°í nowurÀÇ actionÀÌ 0À̹ǷΠóÀ½ ÀúÀåÇÒ ¶§ÀÇ »óÅÂ¿Í µ¿ÀÏÇÑ »óÅ°¡ µÇ¾úÀ¸¸ç bModified´Â ´Ù½Ã FALSE°¡ µÉ °ÍÀÌ´Ù.

ÇÏÁö¸¸ ´«À¸·Î º¸´Ù½ÃÇÇ ¹®¼­¿¡ ÀÖ´ø ¹®ÀÚ¿­Àº ¡°°¡ ³ª ¡±¿¡¼­ ¡°°¡ ¹Ù ¡±·Î ¹Ù²î¾úÀ¸¹Ç·Î ºÐ¸íÈ÷ ´Ù¸¥ ¹®¼­ÀÌ´Ù. ÇÏÁö¸¸ ArrangeModified ÇÔ¼ö´Â Á¶°Ç¿¡ ÀÇÇØ µÎ »óŸ¦ °°Àº ¹®¼­·Î ¿ÀÆÇÇÏ°Ô µÈ´Ù. ÀÌ ÇÔ¼ö´Â Ãë¼Ò¿¡ ÀÇÇØ ¿ø·¡ »óÅ·Πµ¹¾Æ°¡´Â °ÍÀº Àß ÆÇ´ÜÇÏÁö¸¸ Ãë¼ÒÇÑ ÈÄ Àç½ÇÇàÇÒ ¶§ÀÇ Á¶°Ç Á¡°ËÀ» Á¦´ë·Î ¸øÇÏ°í ÀÖ´Ù. ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ·Á¸é ¹®¼­ÀÇ »óŸ¦ Á» ´õ Á¤È®ÇÏ°Ô ÀúÀåÇϰųª ¾Æ´Ï¸é ÁúÀûÀ¸·Î ´Ù¸¥ ȹ±âÀûÀÎ ¹æ¹ýÀ» ã¾Æ¾ß ÇÑ´Ù. ¹®¼­¸¦ ÀúÀåÇÒ ¶§ÀÇ ·¹ÄÚµå ÷ÀÚÀÎ saveur¸¸ ÀúÀåÇؼ­´Â ÀÌ µÎ »óÅ°¡ ´Ù¸£´Ù´Â °ÍÀ» ÆÇ´ÜÇϱ⠹«Ã´ ¾î·Æ´Ù.

ÀúÀåÇÒ ¶§ ¾Æ·¡ÂÊ¿¡ ÀÖ´ø ·¹ÄÚµåÀÇ »óűîÁö °°ÀÌ ÀúÀåÇؾ߸¸ ¿ÏÀüÇÑ ºñ±³¸¦ ÇÒ ¼ö Àִµ¥ ÀÌ´Â ¹«Ã´À̳ª ÇÇ°ïÇÑ ÀÏÀÌ´Ù. Ãë¼Ò¸¦ ¿©·¯ ¹ø ÇÒ ¼ö ÀÖÀ¸¹Ç·Î °á±¹ ¸ðµç ·¹Äڵ带 ´Ù ÀúÀåÇØ¾ß ÇÏ´Â ¼ÀÀÌ µÇ´Âµ¥ ÀÌ·¸°Ô ÇÒ ¹Ù¿¡¾ß Â÷¶ó¸® ¹®¼­ Àüü¸¦ ´Ù ÀúÀåÇÏ´Â ÆíÀÌ ´õ ³ªÀ» °Í °°´Ù. ÇÏÁö¸¸ ¸î ÀÏ°£ÀÇ °í½É³¡¿¡ Á» ´õ °£´ÜÇÑ ¹æ¹ýÀ» ã¾Ò´Âµ¥ ¹Ù·Î ´ÙÀ½ ¸íÁ¦°¡ ÇØ°áÃ¥À» Á¦½ÃÇß´Ù.

 

saveurº¸´Ù ´õ ¾Æ·¡ÂÊ¿¡ ÀÖ´ø ·¹Äڵ尡 Á¶±ÝÀÌ¶óµµ º¯°æµÇ¸é ¹®¼­´Â ´Ù½Ã º¯°æµÇÁö ¾ÊÀº »óÅ·Πµ¹¾Æ°¥ ¼ö ¾ø´Ù.

 

ÀúÀåÇÒ ¶§ ÀÌ¹Ì ÀԷµǾî ÀÖ´ø ¡°°¡ ¡±, ¡°³ª ¡± Áß Çϳª¸¦ Ãë¼ÒÇÑ ÈÄ ´Ù¸¥ ¹®ÀÚ·Î ¹Ù²ã¹ö¸®¸é ÀÌ ¹®¼­´Â ´Ù½Ã ÀúÀåÇÒ ½ÃÁ¡À¸·Î µ¹¾Æ°¥ ¼ö ¾ø´Ù´Â ¶æÀÌ´Ù. ÇÏÁö¸¸ Ãë¼Ò ÀÚü¿¡ ÀÇÇؼ­ º¹¿ø ºÒ°¡ »óÅ°¡ µÇÁö´Â ¾Ê´Â´Ù. ¿Ö³ÄÇϸé Ãë¼ÒÇÑ ÈÄ ´Ù½Ã Àç½ÇÇàÇÒ ¼öµµ Àֱ⠶§¹®ÀÌ´Ù. ¿¹¸¦ µé¾î ¡°³ª ¡±ÀÇ ÀÔ·ÂÀ» Ãë¼ÒÇß´õ¶óµµ ´Ù½Ã Àç½ÇÇàÇÏ¸é µÇ¹Ç·Î ¾ÆÁ÷±îÁö´Â º¹¿ø °¡´ÉÇÑ »óŸ¦ À¯ÁöÇÏ°í ÀÖ´Ù. º¹¿ø ºÒ°¡ »óÅ°¡ µÇ´Â °æ¿ì´Â Ãë¼ÒÇÑ ÈÄ ·¹Äڵ带 º¯°æÇÒ ¶§, Áï ClearRedo ÇÔ¼ö¿¡ ÀÇÇØ ·¹Äڵ尡 »èÁ¦µÉ ¶§ÀÌ´Ù. ÀÌ »óÅ°¡ µÇ¸é ¹®¼­´Â Ãë¼Ò/Àç½ÇÇàÀ» ¾î¶»°Ô ÇÏ´õ¶óµµ ÀÌ¹Ì º¹¿ø Á¤º¸¸¦ ÀÒ¾î ¹ö¸° »óÅ°¡ µÈ´Ù.

±×·¸´Ù¸é ÀÌ ÄÚµå´Â ¾îµð´Ù ÀÛ¼ºÇØ¾ß ÇÒ±î? Ç÷¡±× º¯¼ö¸¦ Çϳª ´õ ¼±¾ðÇÏ°í saveur ÀÌÀüÀÇ ·¹Äڵ尡 »èÁ¦µÇ¾úÀ» ¶§ ÀÌ Ç÷¡±×¿¡ º¹¿ø ºÒ°¡ »óŸ¦ ÀúÀåÇÑ´Ù. ±×¸®°í º¹¿ø ºÒ°¡ »óÅÂÀÏ ¶§ ArrangeModified´Â ¾î¶² °æ¿ì¶óµµ bModified¸¦ ´Ù½Ã FALSE·Î ¹Ù²ÙÁö ¾Êµµ·Ï ÇÑ´Ù. ±×·¯³ª ´õ °£´ÜÇÑ ¹æ¹ýÀº saveur ÀÚü¸¦ ¹«È¿È­½ÃÅ°´Â °ÍÀÌ´Ù. ClearRedo ÇÔ¼ö¿¡ ´ÙÀ½ Äڵ带 ÀÛ¼ºÇϵµ·Ï ÇÏÀÚ.

 

void CApiEdit::ClearRedo()

{

     int i;

 

     for (i=nowur;;i++) {

        if (i<saveur) {

           saveur=-1;

        }

          if (pUR[i].action==UR_NONE) {

              break;

          }

          if (pUR[i].data != NULL)

              free(pUR[i].data);

          memset(&pUR[i],0,sizeof(UndoRecord));

     }

}

 

»èÁ¦µÇ´Â ·¹Äڵ尡 saveurº¸´Ù ´õ ÀÛÀ¸¸é saveurÀ» -1·Î ¸¸µç´Ù. saveurÀÌ -1ÀÌ µÇ¸é nowurÀº °áÄÚ saveur°ú °°¾ÆÁú ¼ö ¾ø´Â »óÅ°¡ µÇ°í °á±¹ bModified´Â ´Ù½Ã FALSE°¡ µÉ ¼ö ¾ø´Ù. saveur¿¡ -1À» ´ëÀÔÇÏ´Â °ÍÀº ArrangeModifiedÀÇ Á¶°Ç¹®À» Always FALSE »óÅ·Π¸¸µå´Â °ÍÀÌ´Ù. º¯°æ °ü¸®¿Í °ü·ÃµÈ ¸¶Áö¸· 󸮴 NextRecord ÇÔ¼ö¿¡ ÀÛ¼ºÇÑ´Ù.

 

void CApiEdit::NextRecord()

{

     ....

 

          nowur=len-1;

        saveur=saveur-i-1;

     }

}

 

ÀÌ ÇÔ¼ö°¡ »óÇѼ± Á¦ÇÑ¿¡ ÀÇÇØ Ãë¼Ò ·¹ÄÚµåÀÇ ÀϺθ¦ »èÁ¦ÇÒ ¶§ saveurµµ »èÁ¦µÈ ·¹ÄÚµå ¼ö¸¸Å­ °¨¼ÒµÇ¾î¾ß ÀúÀåµÈ ½ÃÁ¡À» Á¦´ë·Î °¡¸®Å°°Ô µÈ´Ù. saveurÀÌ ¿Ö -i-1¸¸Å­ À̵¿Çϴ°¡ Çϸé nowur ÀÌ À̸¸Å­ À̵¿Ç߱⠶§¹®ÀÌ´Ù. À̶§ saveurÀÌ »ç¶óÁø ·¹ÄÚµåÀÇ ÀϺο´´Ù¸é À½¼ö°¡ µÉ ¼öµµ Àִµ¥ ±×·¡µµ »ó°ü¾ø´Ù. À½¼ö°¡ µÈ´Ù´Â °ÍÀº °ð ÀúÀåÇÒ ¶§ÀÇ »óÅ·δ Ãë¼ÒÇÒ ¼ö ¾ø´Ù´Â ¶æÀ̸ç Ãë¼Ò ·¹ÄÚµåÀÇ »óÇѼ±À» Á¦ÇÑÇÏ´Â Àǵµ¿¡ ºÎÇյȴÙ.

°áÄÚ ½±Áö ¾ÊÀº ³»¿ëÀ» ´Ù·ç¾ú´Âµ¥ ³ªµµ ²Ï ¸¹Àº °í¹Î³¡¿¡ ÀÛ¼ºÇÑ ÄÚµå¶ó ¹«Ã´ ÁöÃÆ´Ù. ƯÈ÷ º¯°æ °ü¸® ÄÚµå´Â ¼ö¸¹Àº ½ÃÇàÂø¿À¸¦ °ÅÃÄ ¸¸µé¾î ³½ °ÍÀε¥ º¸¿©ÁØ Äڵ庸´Ù ¸î ¹è ´õ ¸¹Àº Äڵ带 ÀÛ¼ºÇß´Ù°¡ ¹ö¸®°í ´Ù½Ã ¸¸µé±â¸¦ ¿©·¯ ¹ø ¹Ýº¹Çß¾ú´Ù. ÃÖÁ¾ °á°úÄڵ尡 ¸î ÁÙ µÇÁö ¾Ê¾Æ °£´ÜÇغ¸ÀÏÁö ¸ð¸£°ÚÁö¸¸ Àú·± ¾ÐÃàµÈ Äڵ带 ÇÑ ¹ø¿¡ ¸¸µç °ÍÀº ¾Æ´Ï´Ù.

¹®¼­°¡ ÀúÀåµÉ ¶§ÀÇ »óŸ¦ ÀúÀåÇÏ°í ºñ±³ÇÑ´Ù´Â °ÍÀº ¹«Ã´ ¾î·Á¿î ÀÏÀÌ´Ù. óÀ½¿¡´Â ÀÛ¼ºÁßÀÎ ·¹ÄÚµåÀÇ »óűîÁö ÀúÀåÇÏ·Á°í ¸î °¡Áö Àü¿ªº¯¼ö¸¦ ´õ »ç¿ëÇߴµ¥ ÀÛ¼ºÁßÀÎ ·¹ÄÚµå´Â ÄÉÀ̽º°¡ ³Ê¹« ¸¹¾Æ ¿ÏÀüÈ÷ °°Àº ·¹ÄÚµåÀÎÁö ºñ±³ÇϱⰡ °ÅÀÇ ºÒ°¡´ÉÇß´Ù. ·¹Äڵ尡 ±×´ë·Î ÀÖ´Â °ÍÀÌ ¾Æ´Ï¶ó Ãë¼ÒµÇ¾ú´Ù°¡µµ Àç½ÇÇàµÉ ¼ö Àֱ⠶§¹®¿¡ Åë»óÀÇ ¹æ¹ýÀ¸·Î´Â µÎ ·¹Äڵ尡 °°ÀºÁö ºñ±³ÇÒ ¼ö°¡ ¾ø¾ú´Ù. °á±¹ ÀúÀå ´ë»óÀÌ µÇ´Â ·¹Äڵ带 ºó ·¹ÄÚµå ¶Ç´Â Ãë¼ÒµÈ ·¹ÄÚµå·Î Á¦ÇÑÇÔ(SaveModified ÇÔ¼öÀÇ NextRecord È£Ãâ)À¸·Î½á ºñ±³ Äڵ带 °£´ÜÇÏ°Ô ¸¸µé ¼ö ÀÖ¾ú´Ù.

¶Ç saveur ÀÌÀüÀÇ ·¹Äڵ带 Ãë¼ÒÇß´Ù°¡ ´Ù½Ã ÀÔ·ÂÇÏ´Â °æ¿ì¿Í Àç½ÇÇàÇÏ´Â °æ¿ì¸¦ ±¸ºÐÇϱ⠾î·Á¿ö ¾ÆÁÖ ¸¹Àº °í¹ÎÀ» Çß¾ú´Ù. ±×¶§ ³»°¡ ÀÛ¼ºÇÑ Äڵ带 º¸Àδٸé Á¤¸» ¾î󱸴ϰ¡ ¾øÀ» °ÍÀÌ´Ù. »ðÀÔ ±â·Ï ¶§ ±×¸° ¼ø¼­µµº¸´Ù ÈξÀ ´õ Å« ¼ø¼­µµ¸¦ ±×¸®°íµµ ¹®Á¦´Â ÀÚ²Ù º¹ÀâÇØÁ®¸¸ °¬´Ù. ÀÌ ¹®Á¦´Â saveur¿¡ À½¼ö¸¦ ´ëÀÔÇÏ´Â ±â°¡ ¸·Èù ¹æ¹ýÀ» ãÀ½À¸·Î½á ÇØ°áÇߴµ¥ ´Ù Ç®°í ³ª´Ï ±×·¸°Ô °£´ÜÇÒ ¼ö°¡ ¾ø¾î ÇãÅ»Çϱ⵵ Çß¾ú´Ù.

¾Õ¼­ ¸¶Áø¿µ¿ªÀ» ÇÁ·Î±×·¡¹ÖÇϸ鼭 ¹Ì±¹°ú ¼Ò·ÃÀÇ º¼Ææ °³¹ß ÀÏÈ­·Î ¹ß»óÀÇ Àüȯ¿¡ ´ëÇÑ ¾ê±â¸¦ ÇÑ ÀûÀÌ Àִµ¥ º¯°æ °ü¸® ¹®Á¦¿¡¼­ ¹ß»óÀÇ ÀüȯÀÌ Á¤¸» ÇÊ¿äÇß´ø °Í °°´Ù. óÀ½ »ý°¢Çß´ø ¹æ½ÄÀ¸·Î °è¼Ó ¹Ð¾î ºÎÃÆ´õ¶ó¸é ÈξÀ ´õ ¾î·Á¿öÁ³À» °ÍÀÌ´Ù. °á±¹Àº ¹®Á¦¸¦ ÇØ°áÇß°ÚÁö¸¸ ±× º¹Àâµµ·Î ÀÎÇØ ¼Óµµ´Â ¶³¾îÁö°í À¯Áö º¸¼ö ºñ¿ëÀº Áõ°¡ÇÏ°Ô µÈ´Ù. ÁÁÀº »ý°¢ÀÌ ¶°¿À¸£Áö ¾ÊÀ» ¶§´Â ¹«¸®ÇÏ°Ô ÀÛ¾÷À» ÁøÇàÇÏÁö ¸»°í Ç« ½¬¸é¼­ ´Ù¸¥ ¹æ¹ý¿¡ ´ëÇØ »ý°¢Çغ¸´Â ¿©À¯¸¦ °®µµ·Ï ÇÏÀÚ.