´Ù. ApiEdit¿Í ÀÌÁø Æ÷¸Ë

SetText ÇÔ¼ö¸¦ º¸¸é ÀÌÁø ÆÄÀÏ Æ÷¸ËÀÏ ¶§µµ º°µµÀÇ º¯È¯¾øÀÌ ¹Ù·Î Àеµ·Ï µÇ¾î ÀÖ´Ù. ¿Ö³ÄÇϸé ÀÌÁø Æ÷¸ËÀº ÅؽºÆ® Æ÷¸Ë°ú ȣȯµÇÁö ¾ÊÀ¸¹Ç·Î º¯È¯ÇÒ ¼öµµ ¾ø°í º¯È¯ÇÒ ÇÊ¿äµµ ¾ø´Ù. ÅؽºÆ® ÆíÁý±â·Î ÀÌÁø ÆÄÀÏÀ» ¿­¾ú´Ù´Â °ÍÀº »ç¿ëÀÚ°¡ ½Ç¼ö¸¦ ÇÑ °ÍÀ̹ǷΠ±×³É ÀÖ´Â ±×´ë·Î º¸¿©Áֱ⸸ ÇÏ¸é µÈ´Ù. È­¸é¿¡ ¾û¶×ÇÑ ¹®ÀÚµéÀÌ ¸¶±¸ Ãâ·ÂµÇ´Âµ¥ ÀÌ·± »óȲÀ» GIGO(Garbage In Garbage Out)¶ó°í ÇÏ¸ç ¿ì¸®¸»·Î ¹ø¿ªÇÏÀÚ¸é ¡®´Ï°¡ À߸øÇßÀݾÆ! Åõ´úÅõ´ú¡¯À̶ó°í ÇÒ ¼ö ÀÖ´Ù.

ÅؽºÆ®¸¦ ÆíÁýÇÏ´Â ÇÁ·Î±×·¥À¸·Î ÅؽºÆ®°¡ ¾Æ´Ñ ÆÄÀÏÀ» ¿­¾ú´Ù´Â °ÍÀº ÇÁ·Î±×·¥ÀÇ ´É·ÂÄ¡ ÀÌ»óÀ» ¿ä±¸ÇÑ »ç¿ëÀÚÀÇ ½Ç¼öÀÌ´Ù. ÀÌ·² °æ¿ì ÇÁ·Î±×·¥ÀÌ ÅÃÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀº ¾Æ¿¹ ¿­Áö ¸øÇϵµ·Ï °ÅºÎÇѴٰųª ¾Æ´Ï¸é °á°ú¾ß ¾î·µç ´ëÃæÀÌ¶óµµ ÀÐÀ» ¼ö ÀÖµµ·Ï ÀÏ´Ü ¿­¾î Áְųª µÑ Áß ÇϳªÀÌ´Ù. Á¶±Ý Ä£ÀýÇÑ Ã´ ÇÏ·Á¸é ¡®½Ç¼öÇϼ̱º¿ä!¡¯ Á¤µµÀÇ ¸Þ½ÃÁö¹Ú½º¸¦ °çµéÀÌ´Â °Íµµ ÁÁ´Ù.

´ç±ÙÀº ÀÌÁø ÆÄÀÏÀÌ¶óµµ ±»ÀÌ °ÅºÎ´Â ÇÏÁö ¾Êµµ·Ï Çߴµ¥ ¿Ö³ÄÇϸé ÀÌÁø ÆÄÀÏ ¼Ó¿¡ ÀϺΠÆ÷ÇÔµÈ ÅؽºÆ®¸¦ È®ÀÎÇϱâ À§ÇØ ÀǵµÀûÀ¸·Î ÆÄÀÏÀ» ¿­¾úÀ» ¼öµµ ÀÖ°í ¿ø·¡ ÅؽºÆ® ÆÄÀÏÀε¥ ÆÄÀÏÀÌ Á¶±Ý ¼Õ»óµÇ¾î ÀÌÁø ÆÄÀÏÀÌ µÇ¾î ¹ö¸° ÆÄÀϵµ Á¸ÀçÇϱ⠶§¹®ÀÌ´Ù. ¶ÇÇÑ ¾ÇÀǾøÀÌ ½Ç¼ö·Î ÀÌÁø ÆÄÀÏÀ» ¿­¾úÀ» ¼öµµ ÀÖÀ¸¹Ç·Î ÀÏ´Ü ÀÌÁø ÆÄÀÏÀ» ¿©´Â °ÍÀ» Çã¿ëÇϱâ·Î ÇÑ´Ù. ÇÏÁö¸¸ ApiEdit°¡ ¿ø·¡ºÎÅÍ ÀÌÁø ÆÄÀÏÀ» °í·ÁÇÏ°í ÀÛ¼ºµÈ ÄÁÆ®·ÑÀÌ ¾Æ´Ï±â ¶§¹®¿¡ ¸¹Àº ¹®Á¦Á¡ÀÌ ÀÖ´Ù.

 

¨ç ApiEdit´Â 0À» ¹®¼­ÀÇ ³¡À¸·Î ÀνÄÇϸç ÀÌ ¹®ÀÚ°¡ ³ª¿À¸é ¿©±â°¡ ¹®¼­ÀÇ ³¡À̶ó°í »ý°¢ÇÑ´Ù. ±×·¡¼­ Áß°£¿¡ 0ÀÌ ÀÖ´Â ÀÌÁø ÆÄÀÏÀ» ¿­¾úÀ» °æ¿ì 0 ÀÌÀü±îÁö¸¸ È­¸é¿¡ Ãâ·ÂµÇ¸ç ±× ÀÌÈÄ´Â Àß·Á¼­ º¸ÀÌÁö ¾Ê´Â´Ù. Insert ÇÔ¼ö´Â TCHAR *ÇüÀÇ µ¥ÀÌÅ͸¦ Àü´Þ¹Þ¾Æ ÀÌ ¹®ÀÚ¿­ ±æÀ̸¸Å­¸¸ ¹®¼­¿¡ »ðÀÔÇϱ⠶§¹®ÀÌ´Ù. ÀÌÁø ÆÄÀÏÀ» ³¡±îÁö ´Ù º¸À̵µ·Ï ÇÏ·Á¸é 0À» ¹«Á¶°Ç ¹®¼­ ³¡À̶ó°í °¡Á¤Çؼ­´Â ¾ÈµÇ¸é doclenÀ» ¹®¼­ ³¡À¸·Î »ý°¢ÇØ¾ß ÇÑ´Ù. ¶ÇÇÑ Insert, Delete, CopyString ÇÔ¼ö¿Í Ãë¼Ò ·¹Äڵ带 ¸ðµÎ ÀÌÁø Æ÷¸Ë¿¡ ¸Â°Ô ¹Ù²ã¾ß Çϸç Á¤·Ä, À̵¿, ¼±Åà ·çƾµéµµ ¸ðµÎ ¼öÁ¤µÇ¾î¾ß ÇÑ´Ù.

¨è ¹®ÀÚ°¡ ¾Æ´Ñ Á¦¾îÄÚµåµéÀ̳ª ÆùÆ®¿¡ Á¤ÀǵǾî ÀÖÁö ¾Ê´Â ÄÚµåµéÀº ÀÌ»óÇÑ ±×¸² ¹®ÀÚµéÀÌ Ãâ·ÂµÈ´Ù. ApiEdit´Â °³ÇàÄÚµå¿Í ÅǸ¸ Á¦¾îÄÚµå·Î ÀÎÁ¤ÇÏ°í ±× ³ª¸ÓÁö´Â ¸ðµÎ TextOutÀ¸·Î È­¸é¿¡ »Ñ¸®±â¸¸ Çϸç ÇÑ±Û ÆùÆ®¿¡ ¾ø´Â ¹®ÀÚ´Â µðÆúÆ® ¹®ÀÚ·Î Ãâ·ÂµÈ´Ù. ÀÌ´Â ¾î¿ ¼ö ¾ø´Â ÀÏÀ̸ç ÇØ°áÇÒ ÇÊ¿ä°¡ ¾ø´Ù.

¨é °³ÇàÄÚµå´Â ¹Ýµå½Ã CR, LF°¡ ¿¬¼ÓµÇ¾î ÀÖ¾î¾ß ÇÑ´Ù. Á¦´ë·Î µÈ À¯´Ð½º³ª ¸ÅŲÅä½Ã ¹®¼­´Â º¯È¯ÇÑ ÈÄ ÆíÁýÇϹǷΠ¹®Á¦°¡ µÇÁö ¾ÊÁö¸¸ CR, LF Á¶ÇÕÀÌ ¸¶±¸ ¼¯¿© ÀÖ´Â ¹®¼­´Â Æ÷¸Ë ºÐ¼®À» Á¤È®ÇÏ°Ô ÇÒ ¼ö ¾øÀ¸¹Ç·Î º¯È¯ÀÌ Á¦´ë·Î µÇÁö ¾Ê´Â´Ù. ¸¸¾à CR¸¸ ÀÖ°í LF°¡ ¾ø´Ù¸é CR ´ÙÀ½ÀÇ ÀÓÀÇÀÇ ÇÑ ¹®ÀÚ¸¦ LF·Î °¡Á¤Çϵµ·Ï µÇ¾î ÀÖÀ¸¸ç LF¸¸ ÀÖ°í CRÀÌ ¾øÀ¸¸é °³ÇàÀº µÇÁö ¾Ê°í LF°¡ ±×·¡Çȹ®ÀÚ·Î Ãâ·ÂµÈ´Ù. Æ÷¸ËÆǺ° ¹× º¯È¯·çƾÀÌ Á» ´õ Á¤±³ÇØÁ®¾ß ÇÑ´Ù.

¨ê ¾ÆÁÖ Æ¯¼öÇÑ °æ¿ì·Î DBCS ¹®ÀÚÀÇ µÚ ¹®ÀÚ°¡ Á¦¾î¹®ÀÚÀÎ °æ¿ì, ƯÈ÷ ÅÇÀÎ °æ¿ì Ãâ·Â»óÀÇ ¹®Á¦°¡ ÀÖ´Ù. ¿¹¸¦ µé¾î 80 09 b0 a1ÀÇ µ¥ÀÌÅÍ°¡ ÀÖÀ» °æ¿ì Á¤·Ä·çƾÀº 8009¸¦ DBCS ¹®ÀÚ·Î Çؼ®ÇÏ¿© ÇÑ ÁÙ¿¡ ÀÖ´Â ¹®ÀÚ·Î Á¤·ÄÇÏ°Ô µÈ´Ù. ±×·¯³ª DrawLineÀº ¹®ÀÚÀÇ ±æÀÌ¿¡ »ó°ü¾øÀÌ ¼¼±×¸ÕÆ®¸¦ ³ª´©±â ¶§¹®¿¡ 09¸¦ ¸¸³µÀ» ¶§ ÀÌ ÀÚ¸®¸¦ ÅÇÀ¸·Î °¡Á¤Çعö¸®°í ¼¼±×¸ÕÆ®¸¦ ³ª´©°Ô µÈ´Ù. DBCS ¹®ÀÚÀÇ °æ°è¿¡¼­ ¼¼±×¸ÕÆ®°¡ ³ª´©¾îÁ³±â ¶§¹®¿¡ MyGetTextExtent ÇÔ¼ö°¡ ÀÌ ¼¼±×¸ÕÆ®ÀÇ ±æÀ̸¦ °è»êÇÒ ¶§ 8009¸¦ ÇÑ ¹®ÀÚ·Î ÀνÄÇؼ­ ¼¼±×¸ÕÆ® °æ°è¸¦ ³Ñ¾î¼­°Ô µÈ´Ù. 8009¿¡´Â ¹®ÀÚ°¡ ÇÒ´çµÇ¾î ÀÖÁö ¾ÊÀ¸¹Ç·Î Á¤»óÀûÀÎ ÅؽºÆ® ÆÄÀÏÀ̶ó¸é ÀÌ·± ÄÚµå´Â Á¸ÀçÇÒ ¼ö ¾øÁö¸¸ ÀÌÁø ÆÄÀÏ¿¡´Â Á¸ÀçÇÒ ¼ö ÀÖ´Ù´Â Á¡ÀÌ ¹®Á¦´Ù. °á±¹ ÀÌ·± ¹®ÀÚÄڵ带 ¸¸³ª¸é ´ç±ÙÀÇ ¾ÈºÎ´Â Àå´ãÇÒ ¼ö ¾ø´Ù.

¨ë ÀÌÁø ÆÄÀÏÀÌ È­¸é¿¡ ¾î¶»°Ô º¸À̴°¡´Â Å©°Ô Áß¿äÇÏÁö ¾Ê´Ù. »ç¿ëÀڵ鵵 ÀÌ ÆÄÀÏÀÌ ÅؽºÆ® ÆÄÀÏÀÌ ¾Æ´Ï¶ó´Â °ÍÀº ¾Ë±â ¶§¹®¿¡ ÀÌÇØÇÒ °ÍÀÌ´Ù. ±×·¯³ª ¸¸¾à ÀÌ ÆÄÀÏÀ» ÆíÁýÇÑ ÈÄ ÀúÀåÇعö¸®¸é 0 ÀÌÈÄÀÇ ¹®ÀÚ´Â ¿ø·¡ ¾ø¾ú´ø °Íó·³ Àß·Á ³ª°¡ ¹ö¸°´Ù. ApiEdit´Â ÅؽºÆ® ÆíÁý ÄÁÆ®·ÑÀÌÁö ÀÌÁø ÆíÁý ÄÁÆ®·ÑÀÌ ¾Æ´Ï±â ¶§¹®ÀÌ´Ù.

 

ºñ·Ï ApiEdit°¡ ÀÌÁø ÆÄÀÏÀ» ´Ù·ç´Â ÄÁÆ®·ÑÀº ¾Æ´ÏÁö¸¸ ½Ç¼öµç °íÀÇµç »ç¿ëÀÚ´Â ÀÌÁø ÆÄÀÏÀ» ¿­ ¼ö ÀÖÀ¸¹Ç·Î ÀÌ·± ¹®Á¦µé¿¡ ´ëÇØ ¾î´À Á¤µµÀÇ ¹æ¾î ż¼¸¦ °®Ãâ ÇÊ¿ä°¡ ÀÖ´Ù. ¿ì¼± ÀÌÁø ÆÄÀÏÀ» ÆíÁýÇÏ°Ô ³»¹ö·Á µÎ¾î¼­´Â ¾ÈµÇ¹Ç·Î ÆÄÀÏÀ» ¿­ÀÚ ¸¶ÀÚ ÀбâÀü¿ë »óÅ·Πº¯°æÇÏ´Â °ÍÀÌ ÁÁ´Ù.

 

BOOL OpenFromFile(TCHAR *Path,BOOL bReadOnly/*=FALSE*/,BOOL bBrowse/*=FALSE*/)

{

     ....

     if (bReadOnly || (GetFileAttributes(Path) & FILE_ATTRIBUTE_READONLY)) {

          pSi->Ae.SetReadOnly(TRUE);

     }

 

    if (pSi->Ae.GetFormat() == AE_FORMAT_BINARY) {

        pSi->Ae.SetReadOnly(TRUE);

    }

 

ÀÌÁø Æ÷¸ËÀ¸·Î ÆǺ°µÇ¸é ÀбâÀü¿ë Ç÷¡±×¸¦ ¼³Á¤ÇÏ¿© ÆíÁýÀ» ÀÏ´Ü ±ÝÁöÇÏ¿´´Ù. ¹°·Ð ÀÌ·¸°Ô Çصµ »ç¿ëÀÚ°¡ ¸Þ´º¸¦ ÅëÇØ ÀбâÀü¿ë ¼³Á¤À» Ç®°í ÆíÁýÇÒ ¼ö ÀÖÁö¸¸ ±×°Í±îÁö Ã¥ÀÓÁú ÇÊ¿ä´Â ¾ø´Ù. ´ÙÀ½Àº DBCSÀÇ °æ°è¿¡ ¼¼±×¸ÕÆ®°¡ °ÉÄ¡´Â ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ DrawLineÀ» ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÑ´Ù.

 

int CApiEdit::DrawLine(HDC hdc, int Line)

{

     ....

     for (;;) {

          for (len=0;;) {

              ....

           if (IsDBCS(nowoff+len)) {

               len+=2;

           } else {

               len++;

           }

          }

 

          if (bInSel && (GetFocus()==hWnd || HideSelType!=0 || bFindSelect)) {

          ....

 

¼¼±×¸ÕÆ®ÀÇ ±æÀ̸¦ Áõ°¡½Ãų ¶§ DBCS¹®ÀÚ´Â ¾Æ¿¹ 2¹ÙÀÌÆ® °Ç³Ê ¶Ùµµ·Ï ÇÔÀ¸·Î½á ¹®ÀÚÀÇ °æ°è¿¡¼­ ¼¼±×¸ÕÆ®¸¦ ³ª´©Áö ¾Êµµ·Ï Çß´Ù. ¹®Á¦ ÇØ°áÀ» À§ÇÑ ÄÚµåÀε¥ Á¡°ËÇØ¾ß ÇÒ È½¼ö¸¦ ÁÙÀÓÀ¸·Î½á ÀÏÁ¾ÀÇ ÃÖÀûÈ­ È¿°úµµ ÀÖ´Ù.

ÀÌÁø ÆÄÀÏ Áö¿øÀ» À§ÇØ ¸î °¡Áö Á¶Ä¡¸¦ ÃëÇßÁö¸¸ ±×·¡µµ ApiEdit´Â ÀÌÁø ÆÄÀÏ¿¡ ´ëÇÑ Áö¿øÀÌ ¹«Ã´ ¹Ì¾àÇÏ´Ù. Á¤·Ä, À̵¿, Ãâ·Â µî ¸ðµç ·çƾÀÇ Äڵ带 ¼öÁ¤ÇØ¾ß ÇÏÁö¸¸ ±×·¸°Ô ÇÏÁö ¾Ê´Â ÀÌÀ¯´Â ¾î¶»°Ô ÇÏ´õ¶óµµ ±Ùº»ÀûÀÎ ÇØ°áÃ¥ÀÌ µÇÁö ¸øÇϱ⠶§¹®ÀÌ´Ù. ÅؽºÆ® ÆíÁý±â·Î ÀÌÁø ÆÄÀÏÀ» º¸°Å³ª ÆíÁýÇÏ·Á¸é °á±¹Àº º°µµÀÇ ÀÌÁø ¸ðµå¸¦ Á¤ÀÇÇØ¾ß Çϸç ApiEdit°¡ ¾Æ´Ñ ´Ù¸¥ ÄÁÆ®·ÑÀÌ ÇÊ¿äÇϱ⠶§¹®ÀÌ´Ù. ÀϺΠÆíÁý±âµéÀº 16Áø¼ö ÇüÅ·ΠÀÌÁø ÆÄÀÏÀ» º¸¿©ÁÖ°í ÆíÁýÇÒ ¼ö ÀÖ´Â Çí»ç ±â´ÉÀ» Á¦°øÇϴµ¥ ´ç±Ùµµ ´ÙÀ½ ¹öÀü¿¡¼­ Çí»ç ¸ðµå(Hexa Mode)¸¦ Á¦°øÇÒ °ÍÀÌ´Ù. À̹ø ¹öÀüÀÇ ½ºÆÑ¿¡¼­´Â ÀÌ ±â´ÉÀÌ Á¦¿ÜµÇ¾úÀ¸¹Ç·Î ´çºÐ°£Àº ÀбâÀü¿ë »óÅ·Π³»¿ë¸¸ º¼ ¼ö ÀÖµµ·Ï Çسõ¾Ò´Ù.