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