°¡. º¯°æ °ü¸®

ÆíÁý±âÀÇ ÆíÁý ´ë»óÀº ÅؽºÆ®Àε¥ ÅؽºÆ®´Â ÀϹÝÀûÀ¸·Î ÆÄÀÏ ÇüÅ·ΠÁ¸ÀçÇϹǷΠÆÄÀÏ¿¡ ÀÖ´Â ÅؽºÆ®¸¦ ÀÐ¾î ¿À°í ÆíÁýµÈ ÅؽºÆ®¸¦ ´Ù½Ã ÆÄÀÏ·Î ÀúÀåÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ÀÌ ±â´ÉÀÌ ¾ø´Ù¸é ¸Å¹ø ÅؽºÆ®¸¦ óÀ½ºÎÅÍ ÀÔ·ÂÇØ¾ß ÇÏ°í ÆíÁýÇÑ ³»¿ëÀ» º¸°üÇÒ ¹æ¹ýÀÌ ¾ø°Ô µÇ¹Ç·Î ÆÄÀÏ ÀÔÃâ·Â ±â´ÉÀº ÆíÁý±âÀÇ °¡Àå ÇʼöÀûÀÎ ±â´ÉÀ̶ó ÇÒ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ ÆíÁý ÄÁÆ®·ÑÀÌ ÆÄÀÏ ÀÔÃâ·ÂÀ» Á÷Á¢ ÇÏÁö´Â ¾ÊÀ¸¹Ç·Î ÄÁÆ®·ÑÀº ÆÄÀÏ °ü¸®¸¦ ÇÒ ÇÊ¿ä°¡ ¾øÀ¸¸ç È£½ºÆ® ÇÁ·Î±×·¥ÀÌ ÇØ¾ß ÇÑ´Ù. ApiEdit´Â È£½ºÆ®°¡ ÀоîÁØ ÆÄÀÏÀ» ¹öÆÛ·Î ÀÔÃâ·ÂÀ» ÇÒ ¼ö ÀÖ´Â ±â´É¸¸ Á¦°øÇÏ¸é µÈ´Ù.

ÆÄÀÏ ÀÔÃâ·Â ±â´ÉÀº Dangeun¿¡ ÀÛ¼ºµÉ °ÍÀ̸ç ApiEdit´Â È£½ºÆ®°¡ ÆÄÀÏ ³»¿ëÀ» ¹öÆÛ¿¡ ÀÐ°í ¾µ ¼ö ÀÖµµ·Ï ÇÏ´Â ÇÔ¼ö¸¸ Á¦°øÇÏ¸é µÈ´Ù. ÀÌ ±â´ÉÀ» Ãß°¡Çϱâ À§ÇØ »õ·Î Dangeun2 ÇÁ·ÎÁ§Æ®¸¦ ÀÛ¼ºÇÏÀÚ. Áö±Ý±îÁö ÇØ ¿Ô´ø °Íó·³ Dangeun1 Æú´õ¸¦ Åë°·Î º¹»çÇÑ ÈÄ Æú´õ À̸§¸¸ Dangeun2·Î º¯°æÇÏ¸é µÈ´Ù. ºÎ¼ÓÆÄÀÏ°ú ¸®¼Ò½º°¡ Àֱ⠶§¹®¿¡ óÀ½ºÎÅÍ ÇÁ·ÎÁ§Æ®¸¦ ¸¸µå´Â °ÍÀº ºñÈ¿À²ÀûÀÌ´Ù. ¾ÕÀ¸·Îµµ »õ·Î ÇÁ·ÎÁ§Æ®¸¦ ¸¸µé ¶§´Â ÀÌ ¹æ¹ý´ë·Î ÀÌÀü ÇÁ·ÎÁ§Æ® Æú´õ¸¦ º¹»çÇÏ¿© »õ ÇÁ·ÎÁ§Æ®¸¦ ¸¸µé °ÍÀÌ´Ù.

ÇÁ·ÎÁ§Æ® Æú´õ¸¦ º¹»çÇÑ ÈÄ¿¡´Â ¹«Á¶°Ç ºôµå/¼Ö·ç¼Ç ´Ù½Ã ºôµå Ç׸ñÀ» ¼±ÅÃÇÏ¿© ¿ÏÀü ºôµå¸¦ ÇÑ ¹ø ÇÏ´Â °ÍÀÌ ÁÁ´Ù. ¾Æ´Ï¸é Debug, Release Æú´õ¸¦ »èÁ¦Çصµ µÈ´Ù. ÀÌÀü Æú´õÀÇ ÀÓ½ÃÀûÀÎ ¼³Á¤»óÅ°¡ ¾ÆÁ÷ ³²¾Æ ÀÖÀ» ¼ö ÀÖÀ¸¹Ç·Î ºôµå¸¦ ´Ù½Ã ÇÏ¿© ¿øº» Æú´õ¿ÍÀÇ °ü°è¸¦ ¿ÏÀüÈ÷ ²÷¾î¾ß ÇÑ´Ù. ƯÈ÷ ºñÁÖ¾ó C++ 7.0ÀÇ °æ¿ì ÆíÁýÇÏ´ø ÆÄÀÏÀÇ °æ·Î¸¦ Àý´ë°æ·Î·Î °¡Áö°í Àֱ⠶§¹®¿¡ ¹®Á¦Á¡ÀÌ ÀÖ´Ù.

ÆÄÀÏ ÀÔÃâ·ÂÀº ÆíÁý±â°¡ ÀÓÀÇ·Î ÇÒ ¼ö ¾øÀ¸¸ç ¹Ýµå½Ã »ç¿ëÀÚÀÇ ¸í½ÃÀûÀÎ ¸í·É, ¶Ç´Â ÀÚµ¿ ¹é¾÷ µîÀÇ ¾Ï½ÃÀûÀÎ µ¿ÀÇ°¡ ÀÖÀ» ¶§¸¸ ¼öÇàÇØ¾ß ÇÑ´Ù. ÆÄÀÏÀº »ç¿ëÀÚÀÇ ¼ÒÀ¯À̹ǷΠÇã°¡¾øÀÌ ÆíÁý±â°¡ ÆÄÀÏ ³»¿ëÀ» ¹Ù²Ù¾î¼­´Â ¾ÈµÇ´Â °ÍÀÌ´Ù. ÇÏÁö¸¸ °¡²û »ç¿ëÀÚµéÀÌ ÆÄÀÏÀ» º¯°æÇسõ°íµµ ÀúÀåÇÏÁö ¾Ê´Â ½Ç¼ö¸¦ ÇÏ´Â °æ¿ì°¡ ÀÖÀ¸¹Ç·Î ÆíÁý±â´Â ÀÌ »ç½ÇÀ» »ç¿ëÀÚ¿¡°Ô ¾Ë·Á¾ß ÇÑ´Ù. ÆíÁý±â»Ó¸¸ ¾Æ´Ï¶ó ÆÄÀÏÀ» ¸¸µå´Â ¸ðµç ÇÁ·Î±×·¥Àº ÀÌ ±â´ÉÀ» °¡Áö°í Àִµ¥ ´ÙÀ½Àº ¸Þ¸ðÀåÀÇ °æ°í ¸Þ½ÃÁöÀÌ´Ù.

ÀúÀåÇÏÁö ¾Ê°í Á¾·áÇÏ°íÀÚ ÇÒ ¶§´Â ÆíÁý ³»¿ëÀ» Á¤¸» ¹ö¸± °ÍÀÎÁö ¾Æ´Ï¸é ½Ç¼ö·Î Á¾·á¸¦ ÇÏ´Â °ÍÀÎÁö È®ÀÎÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. ±×·¸Áö ¾ÊÀ¸¸é ´Ü¼øÇÑ ½Ç¼ö¿¡ ÀÇÇØ ¸î ½Ã°£ µ¿¾È ¿­½ÉÈ÷ ÆíÁýÇÑ ³»¿ëÀ» ÀÒ¾î¹ö¸®°Ô µÉ °ÍÀÌ°í ÀÌ·± »óȲÀ» ¹æÄ¡Çؼ­´Â ¾ÈµÈ´Ù. ÆíÁý±â°¡ ÀÌ °æ°í¸¦ º¸¿©ÁÖ·Á¸é ÅؽºÆ®¸¦ ÀÐÀº ÈÄ º¯°æµÇ¾ú´ÂÁö ¾Æ´ÑÁö¸¦ Ç×»ó °¨½ÃÇÏ°í ÀÖ¾î¾ß Çϴµ¥ ÀÌ Á¤º¸¸¦ º¯°æÇ÷¡±×(Modification Flag)¶ó°í ÇÑ´Ù.

ApiEdit.hÀÇ Å¬·¡½º ¼±¾ðºÎ¿¡ ´ÙÀ½ º¯¼ö¸¦ Ãß°¡ÇÑ´Ù. ÀÌ º¯¼ö°¡ º¯°æÇ÷¡±×·Î »ç¿ëµÇ¸ç º¯°æ ¶Ç´Â ¾Èº¯°æ µÑ Áß ÇϳªÀÇ »óŸ¦ °¡Áö¹Ç·Î BOOLÇüÀÌ¸é µÈ´Ù.

 

class CApiEdit

{

     ....

     BOOL bModified;

 

ÀÌÁ¦ ApiEdit´Â Ŭ·¡½º°¡ µÇ¾úÀ¸¹Ç·Î ÇÊ¿äÇÑ ¸ðµç º¯¼ö´Â Çì´õ ÆÄÀÏÀÇ Å¬·¡½º ¼±¾ðºÎ¿¡ ÀÌ·± ½ÄÀ¸·Î Ãß°¡ÇØ¾ß ÇÑ´Ù. ÃÖÃÊ ½ÇÇàµÉ ¶§´Â ¹®¼­°¡ ÀüÇô ÆíÁýµÇÁö ¾ÊÀº »óÅÂÀ̹ǷΠOnCreate¿¡¼­ ÀÌ Ç÷¡±×¸¦ FALSE·Î ÃʱâÈ­ÇÑ´Ù.

 

BOOL CApiEdit::OnCreate(HWND hWnd, LPCREATESTRUCT lpCreateStruct)

{

     ....

     bModified=FALSE;

 

ÃÖÃÊ FALSE°ªÀ» °¡Áö´Ù°¡ ¹®¼­°¡ Á¶±ÝÀÌ¶óµµ ÆíÁýµÇ¸é TRUE·Î ¹Ù²ã Áִµ¥ Insert¿Í Delete ÇÔ¼ö¿¡¼­¸¸ ¹®¼­¸¦ º¯°æÇÒ ¼ö ÀÖÀ¸¹Ç·Î µÎ ÇÔ¼ö¿¡¼­ ÀÌ º¯¼ö°ªÀ» TRUE·Î ¹Ù²Ù¸é µÈ´Ù. CopyStringÀ̳ª Ŭ¸³º¸µå Á¶ÀÛ µî ¹®¼­¸¦ º¯°æÇÏ´Â ¸ðµç ÄÚµåµéÀº ÀÌ µÎ ÇÔ¼ö¸¦ °ÅÄ¡µµ·Ï µÇ¾î ÀÖÀ¸¹Ç·Î ¿©±â¼­¸¸ Ç÷¡±×¸¦ Á¶ÀÛÇÏ¸é µÈ´Ù.

 

void CApiEdit::Insert(int nPos, TCHAR *str)

{

     ....

     UpdateLineInfo(nPos,lstrlen(str));

     UpdateScrollInfo();

    SetModified(TRUE);

     ....

 

void CApiEdit::Delete(int nPos, int nCount)

{

     ....

     UpdateLineInfo(nPos,-nCount);

     UpdateScrollInfo();

    SetModified(TRUE);

     doclen-=nCount;

}

 

Ç÷¡±×¸¦ °ü¸®Çϴ åÀÓÀº ApiEdit¿¡°Ô ÀÖÁö¸¸ ÀÌ Ç÷¡±×¸¦ »ç¿ëÇÏ´Â °ÍÀº È£½ºÆ® ÇÁ·Î±×·¥ÀÌ´Ù. ÆÄÀÏÀ» ÀúÀåÇϰųª »õ ÆÄÀÏÀ» ¸¸µé±â Á÷Àü¿¡ ÀÌ Ç÷¡±×ÀÇ »óŸ¦ º¸°í »ç¿ëÀÚ¿¡°Ô ÀúÀå ¿©ºÎ¸¦ Áú¹®ÇØ¾ß ÇÑ´Ù. ApiEdit´Â Ç÷¡±×¸¦ °ü¸®ÇÏ°í È£½ºÆ®°¡ ÀÌ Ç÷¡±×¸¦ ÀÐ°í ¾µ ¼ö ÀÖµµ·Ï ÇÔ¼ö¸¸ Á¦°øÇÏ¸é µÈ´Ù. ´ÙÀ½ µÎ ¸â¹öÇÔ¼ö¸¦ Ãß°¡ÇÑ´Ù.

 

class CApiEdit

{

     ....

     BOOL GetModified() { return bModified; }

     void SetModified(BOOL aModi);

 

bModified ¸â¹öº¯¼ö¸¦ ¹Ù·Î ÀÐÀ» ¼öµµ Àִµ¥ ¿Ö ÀÌ·± ½ÄÀ¸·Î ÇÔ¼ö¸¦ Á¦°øÇØ¾ß Çϴ°¡ Çϸé bModified´Â private ¼Ó¼ºÀ» °¡Áö´Â ¼û°ÜÁø ¸â¹öÀ̱⠶§¹®¿¡ ApiEdit¿ÜºÎ¿¡¼­ ÇԺηΠ°ªÀ» Àаųª º¯°æÇÒ ¼ö ¾ø´Ù. ±×·¡¼­ ¾ÈÀüÇÏ°Ô °ªÀ» ÀÐ°í ¾µ ¼ö ÀÖµµ·Ï Çϱâ À§ÇØ ¸â¹öº¯¼ö¸¦ ¾×¼¼½ºÇÏ´Â public ÇÔ¼ö¸¦ Á¦°øÇÑ´Ù. OOPÀÇ Á¤º¸ ÀºÆó ±â´ÉÀ» ½ÊºÐ È°¿ëÇϱâ À§ÇØ °¡±ÞÀûÀÌ¸é ¸â¹öº¯¼ö¸¦ ¼û±â´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù.

¶ÇÇÑ ¸â¹öº¯¼ö º¯°æ½Ã Ãß°¡ÀûÀΠ󸮰¡ ÇÊ¿äÇÒ ¼öµµ ÀÖÀ¸¹Ç·Î È£½ºÆ®°¡ Á÷Á¢ ÀÌ Ã³¸®¸¦ ÇÏ´Â °ÍÀº ºÎÀû´çÇÏ´Ù. ¿¹¸¦ µé¾î ÁÙ°£(LineRatio)À» ¹Ù²Ù¸é È­¸éÀ» ´Ù½Ã ±×·Á¾ß ÇÏ°í ÅÇ Å©±â(TabSize)¸¦ ¹Ù²Ù¸é Á¤·ÄÀ» ´Ù½Ã ÇØ¾ß ÇÏ´Â Ãß°¡ 󸮰¡ ÇÊ¿äÇÏ´Ù. ±×·¯¹Ç·Î È£½ºÆ®¿¡¼­ Ae.LineRatio=150 °ú °°ÀÌ ¹Ù·Î ´ëÀÔÇϵµ·Ï ³» ¹ö·Á µÎ¾î¼­´Â ¾ÈµÈ´Ù. ÀÌ·¸°Ô µÇ¸é ÁÙ°£¸¸ ¹Ù²î°í È­¸éÀº ±×´ë·ÎÀ̹ǷΠªÀº ¼ø°£À̳ª¸¶ ºÒÀÏÄ¡°¡ ¹ß»ýÇÑ´Ù.

È£½ºÆ®´Â ¸â¹öº¯¼ö¸¦ Á÷Á¢ ¾×¼¼½ºÇÏÁö ¾Ê°í ÀÐ°í ¾µ ¶§ Get/Set ÇÔ¼ö¸¦ »ç¿ëÇϵµ·Ï Çϸé ÇÁ·Î±×·¡¹Ö ÀÎÅÍÆäÀ̽º¸¦ ÀÏ°üÀûÀ¸·Î À¯ÁöÇÒ ¼ö ÀÖ´Ù. À§ ¿¹Ã³·³ ¾ÕÀ¸·Î È£½ºÆ®¿¡¼­ ¸â¹öº¯¼ö¸¦ ¾×¼¼½ºÇÒ ÇÊ¿ä°¡ ÀÖÀ¸¸é ±×¶§¸¶´Ù Get/Set ÇÔ¼ö½ÖÀ» ¸¸µé °ÍÀÌ´Ù. Get ÇÔ¼ö´Â º¸Åë °ªÀ» ´Ü¼øÈ÷ ¸®ÅÏÇÏ´Â Á¤µµÀÇ ÄÚµå¹Û¿¡ ¾øÀ¸¹Ç·Î ÀζóÀÎÀ¸·Î ¹Ù·Î ÀÛ¼ºÇÏ°í Set ÇÔ¼ö´Â CPP ÆÄÀÏ¿¡ Äڵ带 ÀÛ¼ºÇÏ´Â °ÍÀÌ °ü·ÊÀûÀÌ´Ù. ´ÙÀ½Àº SetModified ÇÔ¼öÀÌ´Ù.

 

void CApiEdit::SetModified(BOOL aModi)

{

     bModified=aModi;

}

 

Àμö·Î Àü´ÞµÈ aModi°ªÀ¸·Î bModified Ç÷¡±×¸¦ º¯°æÇÑ´Ù. Áö±ÝÀº ¸â¹ö¿¡ °ªÀ» ´ëÀÔÇÏ´Â Äڵ常 ÀÖÁö¸¸ º¯°æÇ÷¡±×ÀÇ º¯°æ½Ã ÇÊ¿äÇÑ µ¿ÀÛÀÌ ÀÖ´Ù¸é ¾ÕÀ¸·Î ¿©±â¿¡ Ãß°¡ Äڵ尡 µé¾î°¡°Ô µÈ´Ù.