³ª. ÁÙ ³¡ À§Ä¡ ã±â

±×·³ ÀÌÁ¦ »õ·Î ¸¸µç ApiEdit2ÇÁ·ÎÁ§Æ®¿¡ Á¤·Ä ±â´ÉÀ» ½ÇÁ¦·Î ±¸ÇöÇغ¸µµ·Ï ÇÏÀÚ. ¸ÕÀú ´ÙÀ½ Àü¿ªº¯¼ö¸¦ Ãß°¡ÇÑ´Ù.

 

int nWrap;

 

ÀÌ º¯¼ö´Â ¾î¶² Á¤·Ä¹æ½ÄÀ» »ç¿ëÇÒ °ÍÀΰ¡¸¦ ÁöÁ¤Çϴµ¥ º¸´Ù½ÃÇÇ BOOLÇüÀÌ ¾Æ´Ï¶ó intÇüÀÌ´Ù. Áï, ¿©·¯ °¡Áö ¹æ½ÄÀÇ Á¤·ÄÀ» Áö¿øÇÑ´Ù´Â ¶æÀÌ´Ù. ÀÌ º¯¼ö°ª°ú Á¤·Ä¹æ½ÄÀº ´ÙÀ½°ú °°ÀÌ Á¤ÀÇÇÏ¿´´Ù.

 

nWrap

ÇѱÛ

¿µ¹®

0(¾øÀ½)

Á¤·Ä ¾ÈÇÔ

Á¤·Ä ¾ÈÇÔ

1(±ÛÀÚ)

±ÛÀÚ

±ÛÀÚ

2(È¥ÇÕ)

±ÛÀÚ

´Ü¾î

3(´Ü¾î)

´Ü¾î

´Ü¾î

 

nWrapÀÌ 0À̸é Á¤·ÄÀ» ÇÏÁö ¾Ê´Â´Ù´Â ¶æÀÌ°í 0ÀÌ ¾Æ´Ï¸é ¾î¶² ¹æ½ÄÀ¸·Îµç Á¤·ÄÀ» ÇÑ´Ù´Â ¶æÀÌ´Ù. ÀÌ Áß º¸ÆíÀûÀ¸·Î ¸¹ÀÌ »ç¿ëÇÏ´Â Á¤·Ä¹æ½ÄÀº 2¹ø È¥ÇÕ Á¤·ÄÀÌ¸ç ¸Þ¸ðÀåÀÌ ¹Ù·Î ÀÌ ¹æ½ÄÀ¸·Î Á¤·ÄÀ» ¼öÇàÇÑ´Ù. ±×·¡¼­ OnCreate¿¡¼­ ÀÌ º¯¼ö¸¦ 2·Î ÃʱâÈ­ÇÏ¿´À¸¸ç ÀÌ º¯¼ö¸¦ ¹Ù²Ù¸é Á¤·Ä¹æ½ÄÀ» º¯°æÇÒ ¼ö ÀÖ´Ù.

 

BOOL OnCreate(HWND hWnd, LPCREATESTRUCT lpCreateStruct)

{

     ...

    nWrap=2;

     return TRUE;

}

 

Á¤·ÄÀ̶õ ÀÛ¾÷¿µ¿ªÀÇ Æø¿¡ ¸Â°Ô ÁÙÀÇ ½ÃÀÛ°ú ³¡À» °áÁ¤ÇÏ´Â ÀÏÀ̹ǷΠÁ¤·ÄÀÇ ÁÖü´Â GetLine ÇÔ¼öÀÌ´Ù. ÁÙ ³¡À» Á¦´ë·Î ã¾Æ ³»´Â °ÍÀÌ Á¤·ÄÀÇ ÁÖµÈ ÀÛ¾÷ÀÌ¸ç °á±¹ GetLineSub ÇÔ¼ö°¡ Á¤·ÄÀÇ ÇÙ½É ÇÔ¼ö°¡ µÈ´Ù. ÀÚµ¿°³ÇàÀ» ÇÏÁö ¾ÊÀ» ¶§ ÀÌ ÇÔ¼ö´Â \rÀ̳ª \0ÀÏ ¶§ Áï, Á¤¸»·Î ÁÙÀÇ ¹°¸®ÀûÀÎ ³¡ÀÏ ¶§ ¸®ÅÏÇϵµ·Ï µÇ¾î ÀÖ¾ú´Ù. ±×·¯³ª ÀÌÁ¦´Â ÀÛ¾÷¿µ¿ªÀÇ ¿À¸¥ÂÊ ³¡¿¡ ´êÀº °æ¿ìµµ ÁÙÀÇ ³¡À¸·Î ÆÇ´ÜÇØ¾ß ÇÑ´Ù. Àüü Äڵ带 º¸°í ºÐ¼®À» Çغ¸µµ·Ï ÇÏÀÚ.

 

int GetLineSub(TCHAR *&p)

{

     HDC hdc;

     int len, acwidth;

     RECT crt;

     int ret;

     TCHAR *EndPos=NULL;

     BOOL IsPrevDBCS=FALSE;

 

     hdc=GetDC(hWndMain);

     GetClientRect(hWndMain,&crt);

 

     if (nWrap==0) {

          for (;;p++) {

               if (*p == ¡®\r¡¯) {

                   ret=1;

                   break;

               }

 

               if (*p == 0) {

                   ret=0;

                   break;

               }

          }

     } else {

          for (acwidth=0;;) {

               if (IsDBCS(p-buf)) {

                   len=2;

 

                   if (nWrap==2 || (nWrap==3 && IsPrevDBCS==FALSE)) {

                        EndPos=p;

                   }

                   IsPrevDBCS=TRUE;

               } else {

                   len=1;

 

                   if (IsPrevDBCS==TRUE) {

                        EndPos=p;

                   }

                   IsPrevDBCS=FALSE;

               }

               acwidth+=GetCharWidth(hdc,p,len);

 

               if (*p == ¡®\r¡¯) {

                   EndPos=p;

                   ret=1;

                   break;

               }

 

               if (*p == 0) {

                   EndPos=p;

                   ret=0;

                   break;

               }

 

               if (acwidth > crt.right-2) {

                   ret=1;

                   break;

               }

 

               if (*p == ¡® ¡® || *p==¡®\t¡¯) {

                   EndPos=p+1;

               }

 

               p+=len;

          }

     }

 

     ReleaseDC(hWndMain,hdc);

     if (nWrap == 1 || EndPos == NULL) {

          p=p;

     } else {

          p=EndPos;

     }

     return ret;

}

 

ÄÚµåÀÇ ±æÀ̸¸ ºÁµµ Á¤·ÄÀÌ °úÈ÷ °£´ÜÇÑ ±â´ÉÀÌ ¾Æ´ÔÀ» ¾Ë ¼ö ÀÖ´Ù. ÇÔ¼öÀÇ Ã¹ ºÎºÐ¿¡¼­ ¸ÕÀú DCÀÇ ÇÚµéÀ» ±¸ÇÏ°í ÀÛ¾÷¿µ¿ªÀ» crt¿¡ Á¶»çÇÑ´Ù. ÀÛ¾÷¿µ¿ª Æø¿¡ ¸Â°Ô Á¤·ÄÀ» ÇÏ·Á¸é ±ÛÀÚµéÀÇ ÆøÀ» ±¸ÇØ¾ß ÇϹǷΠDC°¡ ÇÊ¿äÇÏ´Ù. ±ÛÀÚÀÇ ÆøÀ̶õ DC¿¡ ¼±ÅõǾî ÀÖ´Â ±Û²ÃÀÇ ÆøÀ̱⠶§¹®ÀÌ´Ù. ÀÛ¾÷¿µ¿ªÀÇ Æøµµ ¹Ì¸® Á¶»çÇسõ´Â °ÍÀÌ ÁÁ´Ù.

¿ì¼± nWrapÀÌ 0ÀÏ ¶§, Áï Á¤·ÄÀ» ÇÏÁö ¾ÊÀ» ¶§´Â ±âÁ¸ ÄÚµå¿Í ¿ÏÀüÈ÷ µ¿ÀÏÇÏ´Ù. ´Ù¸¸ ÇÔ¼ö¸¦ Á¾·áÇϱâ Àü¿¡ Æø °è»êÀ» À§ÇØ ¾ò¾î ³õÀº DC¸¦ ÇØÁ¦ÇØ¾ß ÇϹǷΠ°ð¹Ù·Î ¸®ÅÏÇÏÁö ¸øÇÏ°í retº¯¼ö¿¡ ¸®ÅÏ°ªÀ» ¸ÕÀú ´ëÀÔÇÑ ÈÄ ·çÇÁ¸¦ ºüÁ®³ª°¡¾ß ÇÑ´Ù´Â Á¡ÀÌ ´Ù¸¦ »ÓÀÌ´Ù.

nWrapÀÌ 0ÀÌ ¾Æ´Ò °æ¿ì´Â Á¤·ÄÀ» Çϴµ¥ ¹®ÀåÀÇ Ã³À½ºÎÅÍ ÇÑ ¹®ÀÚ¾¿ ÀÐ¾î ¹®ÀÚµéÀÇ ÆøÀ» ÇÕ»êÇϸ鼭 ÀÛ¾÷¿µ¿ªÀÇ ÆøÀ» ³Ñ¾î°¡´ÂÁö Ç×»ó °¨½ÃÇØ¾ß ÇÑ´Ù. else ¾ÈÀÇ for¹®¿¡¼­ ÁÙÀÇ Ã³À½ºÎÅÍ ¹®ÀÚ¸¦ °Ë»çÇÏ¿© acwidth º¯¼ö¿¡ ¹®ÀÚµéÀÇ ÆøÀ» ´©Àû½ÃÅ°°í ÀÖ´Ù. ÀÌ ·çÇÁ¸¦ Å»ÃâÇÏ´Â Á¶°ÇÀº ¼¼ °¡Áö°¡ ÀÖ´Ù.

ù ¹ø°´Â \rÀ» ¸¸³µÀ» ¶§Àε¥ ÀÌ ÄÚµå´Â ÁøÂ¥ °³ÇàÇ϶ó´Â ¸í·ÉÀ̹ǷΠ´õ º¼ °Íµµ ¾øÀÌ ´çÀå ·çÇÁ¸¦ Å»ÃâÇØ¾ß ÇÑ´Ù. °³ÇàÄڵ尡 ÀÖ´Â ÀÚ¸®´Â ÀÚµ¿°³Çà ±â´ÉÀÇ ¿©ºÎ¿¡ »ó°ü¾øÀÌ ¹«Á¶°Ç ÁÙÀÇ ³¡ÀÌ´Ù. µÎ ¹ø°´Â \0¸¦ ¸¸³µÀ» ¶§Àε¥ ¹®¼­ÀÇ ³¡À̹ǷΠ¸¶Âù°¡Áö·Î ·çÇÁ¸¦ Å»ÃâÇØ¾ß ÇÑ´Ù. ¹®¼­ÀÇ ³¡À» ¸¸³µÀ¸´Ï ´õ º¸°í ½Í¾îµµ µÚÂÊ¿¡ º¼ ¹®ÀÚ°¡ ¾ø´Ù.

¼¼ ¹ø° ·çÇÁ Å»Ãâ Á¶°ÇÀº acwidth > crt.right-2ÀÏ ¶§ Áï, ¹®ÀÚÆøÀÇ ´©Àû°ªÀÌ ÀÛ¾÷¿µ¿ªÀÇ ¿À¸¥ÂÊ ³¡º¸´Ù ´õ Ä¿Á³À» ¶§ÀÌ´Ù. ¿¹¸¦ µé¾î ÀÛ¾÷¿µ¿ªÀÇ ÆøÀº 200Çȼ¿Àε¥ Áö±Ý±îÁöÀÇ ¹®ÀÚÆø ÃÑÇÕÀÌ 210À̶ó¸é ÀÚµ¿°³ÇàÇØ¾ß ÇÒ ¶§À̹ǷΠ·çÇÁ¸¦ Å»ÃâÇÑ´Ù. ÀÌ ¹®ÀÚ ¹Ù·Î ¾Õ¹®ÀÚ°¡ ÁÙÀÇ ¸¶Áö¸· ¹®ÀÚ°¡ µÇ¸ç ÀÌ À§Ä¡¿¡¼­ À߶ó¾ß ÇÑ´Ù. ¾Õ Àý¿¡¼­ ¼³¸íÇß´Ù½ÃÇÇ GetLineSub ÇÔ¼ö´Â ÁÙÀÇ ³¡ ¹®ÀÚ¸¦ ¸®ÅÏÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ÁÙ ³¡ ´ÙÀ½ ¹®ÀÚ¸¦ ¸®ÅÏÇϵµ·Ï µÇ¾î ÀÖÀ¸¹Ç·Î ÀÌ À§Ä¡¿¡¼­ ·çÇÁ¸¦ ºüÁ® ³ª°¡¸é µÈ´Ù. ÀÌ Á¶°Ç¹®Àº ÀÛ¾÷¿µ¿ªÆøÀ» ³ÑÀº ÃÖÃÊÀÇ ¹®ÀÚ¸¦ ¸¸³µÀ» ¶§ ÀÌ À§Ä¡¸¦ ÁÙÀÇ ³¡À¸·Î º»´Ù´Â ¶æÀÌ´Ù.

ÀÛ¾÷¿µ¿ªÀÇ ÆøÀº crt.right-2·Î Ç¥ÇöµÇ´Âµ¥ ¿©±â¼­ -2¸¦ ÇÑ Àǹ̴ ÀÛ¾÷¿µ¿ª ¿À¸¥ÂÊ¿¡ 2Çȼ¿¸¸Å­ ¿©À¯¸¦ Áشٴ ¶æÀÌ´Ù. ÀÌ ¿©À¯ºÐÀÌ ¿Ö ÇÊ¿äÇÑ°¡ Çϸé Á¦ÀÏ ¿À¸¥ÂÊ¿¡ ¹®ÀÚ°¡ ¹ÐÂøÇØ ÀÖ°í ij·µÀÌ ÀÌ ¹®ÀÚ µÚ¿¡ ÀÖÀ» ¶§ ÀÛ¾÷¿µ¿ª ¹Ù±ùÀ¸·Î ij·µÀÌ ¹Ð·Á ¾Èº¸À̱⠶§¹®ÀÌ´Ù. ±×·¡¼­ ¾î¶² °æ¿ì¶óµµ ij·µÀÌ º¸À̵µ·Ï Çϱâ À§ÇØ Ä³·µÀÇ Æø¸¸Å­ÀÎ 2Çȼ¿ÀÇ ¿©À¯¸¦ ÁÖ´Â °ÍÀÌ´Ù. ij·µÀÌ ¼û¾î¼­ ¾È º¸ÀÌ´Â »óȲÀ» ¸¸µé¾î¼­´Â °ï¶õÇÏ´Ù.

nWrapÀÌ 1ÀÏ ¶§¸¦ º¸ÀÚ. ÇѱÛÀ̳ª ¿µ¹®À̳ª ±ÛÀÚ ´ÜÀ§·Î À߶ó¾ß ÇϹǷΠ·çÇÁ¸¦ ºüÁ®³ª¿Â Á÷ÈÄÀÇ À§Ä¡¸¦ ¸®ÅÏÇÏ¸é µÈ´Ù. for ·çÇÁ ´ÙÀ½¿¡ nWrapÀÌ 1À̸é p=p¸¦ ´ëÀÔÇϵµ·Ï ÇÏ¿© ·çÇÁ¿¡¼­ °è»êÇÑ p¸¦ ±×´ë·Î ´Ù½Ã ³Ñ°Ü ÁØ´Ù. ±ÛÀÚ ´ÜÀ§ Á¤·ÄÀº ÆøÀ» ³Ñ¾úÀ» ¶§ ·çÇÁ¸¦ Å»ÃâÇÏ°í ±× À§Ä¡¸¦ ±×´ë·Î ¸®ÅÏÇϹǷΠº°·Î ¾î·ÆÁö ¾Ê´Ù.

À̹ø¿¡´Â nWrapÀÌ 3ÀÎ °æ¿ì, Çѱ۰ú ¿µ¹®À» ¸ðµÎ ´Ü¾î·Î Á¤·ÄÇÒ ¶§¸¦ º¸ÀÚ. ´Ü¾î·Î Á¤·ÄÇÒ ¶§´Â ·çÇÁ Å»Ãâ½ÃÀÇ À§Ä¡¿Í ½ÇÁ¦ À߶ó¾ß ÇÒ À§Ä¡°¡ ´Ù¸£±â ¶§¹®¿¡ °ñÄ¡°¡ ¾ÆÇÁ´Ù.

¡®»ê¡¯ÀÚ¿¡¼­ ÆøÀ» ³Ñ¾úÁö¸¸ ½ÇÁ¦·Î À߶ó¾ß ÇÒ À§Ä¡´Â ¡®»ê¡¯ÀÚ°¡ Æ÷ÇÔµÈ ´Ü¾îÀÎ ¡®°­»ê¡¯ÀÇ ¹Ù·Î ¾Õ À§Ä¡°¡ µÈ´Ù. ´Ü¾î Á¤·ÄÀ» Çϱâ À§Çؼ­´Â ¾ÕÂÊÀ¸·Î À̵¿Çϸ鼭 °ø¹éÀ» ã¾Æ¾ß Çϴµ¥ MBCS¿¡¼­ ¾ÕÀ¸·ÎÀÇ À̵¿Àº ´À¸®°í ¹ø°Å·Ó´Ù. ¸Å¹ø GetPrevOff ÇÔ¼ö¸¦ ºÒ·¯¾ß Çϴµ¥ ÀÌ·¯¸é ¾ó¸¶³ª ´À·ÁÁö°Ú´Â°¡? ±×·¡¼­ ÀÌ¹Ì ÀÐÀº ¹®ÀÚ¸¦ °Å²Ù·Î ´Ù½Ã Àд ¹æ¹ýÀº °ï¶õÇÏ°í Á» ´õ È¿À²ÀûÀÎ ´Ù¸¥ ¹æ¹ýÀ» ã¾Æ¾ß ÇÑ´Ù.

¿©±â¼­ »ç¿ëÇÏ´Â ¹æ¹ýÀº ¾ÖÃʺÎÅÍ Çѹ®ÀÚ¾¿ ÆøÀ» ÇÕ»êÇÏ´Â °úÁ¤¿¡¼­ À߶ó¾ß ÇÒ Èĺ¸ À§Ä¡¸¦ ±â¾ïÇسõ°í ¿À¸¥ÂÊ ³¡¿¡ ´êÀ¸¸é ¹Ì¸® ±â¾ïÇسõÀº Èĺ¸ À§Ä¡¿¡¼­ ÀÚ¸£´Â ¹æ¹ýÀÌ´Ù. ÀÌ Èĺ¸ À§Ä¡¸¦ ±â¾ïÇÏ´Â º¯¼ö°¡ ¹Ù·Î EndPosÀÌ´Ù. ´Ü¾î Á¤·ÄÀ» ÇÒ ¶§ Èĺ¸ À§Ä¡¸¦ ¼±Á¤ÇÏ´Â ½ÃÁ¡Àº ¼¼ °¡Áö°¡ ÀÖ´Ù. ù ¹ø°´Â °ø¹é°ú ÅÇÀ» ¸¸³¯ ¶§ÀÌ´Ù. °ø¹é°ú ÅÇÀº ´Ü¾î¸¦ ±¸ºÐÇÏ´Â ±¸ºÐÀÚÀ̹ǷΠÀÌ ¹®ÀÚ ´ÙÀ½ À§Ä¡°¡ È帰¡ µÈ´Ù. °ø¹éÀ̳ª ÅÇ(ÇÕÃļ­ ±×³É °ø¹éÀ̶ó°í ÇÏÀÚ) À§Ä¡°¡ ¾Æ´Ñ ¹Ù·Î ´ÙÀ½ À§Ä¡¸¦ ¼±Á¤ÇÏ´Â ÀÌÀ¯´Â °ø¹é±îÁö ÇöÀç ÁÙ¿¡ Æ÷ÇÔ½ÃÅ°±â À§Çؼ­ÀÌ´Ù. °ø¹éÀº °¡±ÞÀûÀ̸é ÁÙ ³¡¿¡ ¿À´Â °ÍÀÌ ÁÁÀ¸¸ç Á٠óÀ½¿¡ °ø¹éÀÌ ÀÖ´Â °ÍÀº º¸±â¿¡ ÁÁÁö ¾Ê´Ù. ´ÙÀ½ Äڵ尡 °ø¹é¿¡¼­ Èĺ¸ À§Ä¡¸¦ ¼±Á¤ÇÑ´Ù.

 

               if (*p == ¡® ¡® || *p==¡®\t¡¯) {

                   EndPos=p+1;

               }

 

°ø¹é ´ÙÀ½À» È帷Π¸¸µé±â À§ÇØ EndPos¿¡ p+1À» ´ëÀÔÇÏ°í ÀÖ´Ù. Âü°í·Î ÀÌ ¿¹Á¦´Â °ø¹é°ú ÅǸ¸À¸·Î ´Ü¾î¸¦ ±¸ºÐÇϴµ¥ Á¤·Ä Á¤Ã¥¿¡ µû¶ó¼­´Â ÄÞ¸¶³ª ¸¶Ä§Ç¥ ±âŸ ±¸µÎÁ¡ µîµµ ´Ü¾î ±¸ºÐÀÚ·Î ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.

Èĺ¸ À§Ä¡°¡ µÇ´Â µÎ ¹ø° °æ¿ì´Â ÇÑ±Û ´ÙÀ½¿¡ °ð¹Ù·Î ¿µ¹®ÀÌ ¿Ã ¶§ÀÌ´Ù. ÀÌ °æ¿ì ºñ·Ï °ø¹éÀº ¾øÁö¸¸ Çѱ۰ú ¿µ¹®À» ÇÑ ´Ü¾î·Î º¼ ¼ö ¾ø´Ù. ¿¹¸¦ µé¾î ¡®Çѱ¹YMCA¡¯³ª ¡®ÄÄÇ»ÅÍ(Computer)¡¯ °°Àº ¹®ÀåÀº °ø¹é¾øÀÌ ºÙ¾î ÀÖÁö¸¸ ¡®Çѱ¹¡¯°ú ¡®YMCA¡¯´Â ºÐ¸íÈ÷ ´Ù¸¥ ´Ü¾î·Î Ãë±ÞµÇ¾î¾ß ÇÑ´Ù. ¸¶Âù°¡Áö·Î ¡®FIFA¿ùµåÄÅ¡¯Ã³·³ ¿µ¹®ÀÌ ¿À´Ù°¡ À̾ ÇѱÛÀÌ ¿À´Â °æ¿ìµµ °ø¹éÀ¸·Î ºÐ¸®µÇ¾î ÀÖÁö´Â ¾ÊÁö¸¸ °¢°¢ ´Ù¸¥ ´Ü¾î·Î ºÁ¾ß ÇÑ´Ù.

ÀÌ µÎ Á¶°ÇÀ» ÆÇ´ÜÇϱâ À§Çؼ­´Â ÀÌÀü ¹®ÀÚ°¡ ÇѱÛÀ̾ú´ÂÁö ¿µ¹®À̾ú´ÂÁö¸¦ ¾Ë¾Æ¾ß Çϴµ¥ ÀÌ·± ¸ñÀûÀ¸·Î IsPrevDBCSº¯¼ö°¡ »ç¿ëµÈ´Ù. ÀÌ º¯¼ö°¡ TRUEÀ̸é ÀÌÀü¿¡ ÀÐÀº ¹®ÀÚ°¡ ÇѱÛÀ̾ú°í FALSEÀÌ¸é ¿µ¹®À̾ú´Ù. ±ÛÀÚ ÇÑÀÚ¸¦ ÀÐÀ» ¶§¸¶´Ù ÀÌ º¯¼ö¿¡ ÇѱÛÀ̾ú´ÂÁö ¿µ¹®À̾ú´ÂÁö¸¦ ±â¾ïÇسõÀ¸¸ç Á¶°ÇÀ» ÆÇ´ÜÇÒ ¶§µµ ÀÌ º¯¼ö°ªÀ» ÂüÁ¶ÇÑ´Ù. ´ÙÀ½ ÄÚµå´Â ¿µ¹®ÀÚ¸¦ ¸¸³µÀ» ¶§ÀÇ Ã³¸®ÀÌ´Ù.

 

                   if (IsPrevDBCS==TRUE) {

                        EndPos=p;

                   }

                   IsPrevDBCS=FALSE;

 

¾Õ ±ÛÀÚ°¡ ÇѱÛÀ̾ú´Ù¸é ÀÌ À§Ä¡°¡ È帰¡ µÇ¹Ç·Î EndPos¿¡ ÇöÀç À§Ä¡¸¦ ±â¾ïÇسõ´Â´Ù. ±×¸®°í IsPrevDBCS¸¦ FALSE·Î ¹Ù²Ù¾î Áö±Ý ÀÐÀº ¹®ÀÚ°¡ ¿µ¹®ÀÚÀÓÀ» ±â·ÏÇسõ´Âµ¥ ÀÌ º¯¼ö´Â ¶Ç ´ÙÀ½ ¹ø ·çÇÁ¸¦ µ¹ ¶§ ÂüÁ¶µÉ °ÍÀÌ´Ù. IsPrevDBCS´Â ±ÛÀÚÀÇ ¹ÙÀÌÆ® ¼ö¸¦ ÇÑ ¹ÚÀÚ ´Ê°Ô °¡Áö°í ÀÖ´Â º¯¼öÀÌ¸ç ¸¸¾à ÀÌ º¯¼ö¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù¸é ¾ÕÂÊÀ¸·Î À̵¿ÇØ ºÁ¾ß ÇÏ´Â ¹ø°Å·Î¿òÀÌ ÀÖÀ» °ÍÀÌ´Ù. ´ÙÀ½ ¹®Àå¿¡¼­ Èĺ¸ À§Ä¡·Î ¼±Á¤µÇ´Â °÷À» º¸ÀÚ.

óÀ½ºÎÅÍ Á× ±ÛÀÚ¸¦ Àо¸é¼­ È帰¡ µÉ¸¸ÇÑ À§Ä¡¸¦ EndPos¿¡ ÀÏÀÏÀÌ ±â·ÏÇسõ´Â´Ù. ±×·¯´Ù°¡ ¾î¶² Á¶°Ç¿¡ ÀÇÇØ ·çÇÁ¸¦ Å»ÃâÇÏ¸é ¸¶Áö¸· ã¾Æ ³õÀº EndPos À§Ä¡°¡ ¹Ù·Î ¸¶Áö¸· ´Ü¾îÀÇ ½ÃÀÛÀ§Ä¡ÀÌ¸ç ¿©±â¼­ ÁÙÀ» ÀÚ¸£¸é µÈ´Ù. \r, \0¿¡ ÀÇÇØ ·çÇÁ¸¦ Å»ÃâÇÒ ¶§´Â Á¤·Ä¹æ½Ä°ú´Â »ó°ü¾øÀÌ ¹Ù·Î ±× ÀÚ¸®¿¡¼­ À߶ó¾ß ÇϹǷΠŻÃâÇϱâ Àü¿¡ EndPos¿¡ p¸¦ ´ëÀÔÇØ¾ß ÇÑ´Ù.

´Ü¾î Á¤·ÄÀº »ç½Ç ±²ÀåÈ÷ º¹ÀâÇÑ ºÎºÐÀε¥ ÀÌ ¿¹Á¦´Â EndPos¿Í IsPrevDBCS µÎ º¯¼öÀÇ µµ¿òÀ» ¹Þ¾Æ ¾ÕÂÊÀ¸·Î À̵¿ÇÏÁö ¾Ê°íµµ À߶ó¾ß ÇÒ ´Ü¾îÀÇ À§Ä¡¸¦ ÈǸ¢ÇÏ°Ô °Ë»çÇس½´Ù.

¸¶Áö¸·À¸·Î nWrapÀÌ 2ÀÎ °æ¿ì Áï, ÇѱÛÀº ±ÛÀÚ·Î Á¤·ÄÇÏ°í ¿µ¹®Àº ´Ü¾î·Î Á¤·ÄÇϴ ȥÇÕ Á¤·Ä¹æ½ÄÀ» ±¸ÇöÇغ¸ÀÚ. ±ÛÀÚ, ´Ü¾î·Î Á¤·ÄÇÏ´Â ±â´ÉÀ» ÀÌ¹Ì ±¸ÇöÇسõ¾ÒÀ¸¹Ç·Î È¥ÇÕ Á¤·ÄÀº ÀÌÁ¦ ¾ÆÁÖ ½±´Ù. ÇѱÛÀÎ °æ¿ì ÀÌÀü ¹®ÀÚ°¡ ¿µ¹®ÀÚÀ̰ųª ÇѱÛÀ̾ú°Å³ª »ó°ü¾øÀÌ ¹«Á¶°Ç Èĺ¸ À§Ä¡·Î ¼±Á¤ÇسõÀ¸¸é µÈ´Ù. ´ÙÀ½ Äڵ尡 ÀÌ ÀÏÀ» ÇÑ´Ù.

 

                   if (nWrap==2 || (nWrap==3 && IsPrevDBCS==FALSE)) {

                        EndPos=p;

                   }

 

nWrapÀÌ 2ÀÎ »óÅ¿¡¼­ ÇѱÛÀÌ ¹ß°ßµÇ´Â Á·Á· EndPos¸¦ Èĺ¸ À§Ä¡·Î ¼±Á¤ÇÔÀ¸·Î½á ·çÇÁ Å»Ãâ½Ã ÀÌ À§Ä¡¿¡¼­ ÁÙÀ» ÀÚ¸£µµ·Ï ÇÑ´Ù. ÀÚ¿¬È÷ ÇѱÛÀº ±ÛÀÚ ´ÜÀ§·Î Á¤·ÄµÈ´Ù. nWrapÀÌ 3ÀÎ °æ¿ì´Â ¾Õ ±ÛÀÚ°¡ ¿µ¹®ÀÚ¿´À» ¶§¸¸ ÀÌ À§Ä¡°¡ Èĺ¸ À§Ä¡°¡ µÇ¹Ç·Î À̶§´Â ´Ü¾î Á¤·ÄµÈ´Ù. ¿©±â±îÁöÀÇ Äڵ带 º¸¸é GetLineSub°¡ Á¤·Ä¹æ½Ä¿¡ µû¶ó ÁÙÀÇ ³¡À» Àß Ã£¾Æ ³»µµ·Ï µÇ¾î ÀÖ´Ù. ÇÏÁö¸¸ ÀÌ´Â ¾îµð±îÁö³ª ƯÀÌÇÏÁö ¾ÊÀº ¹®Àå¿¡ ´ëÇؼ­¸¸ Àß µ¿ÀÛÇϸç Á¤·Ä Çϱâ Èûµç Á¶°Ç¿¡ ´ëÇؼ­´Â ¿¹¿Ü 󸮰¡ ÇÊ¿äÇÏ´Ù.

GetLineSub ÇÔ¼öÀÇ ³¡ºÎºÐ¿¡ ÀÖ´Â Á¶°Ç¹® if (nWrap==1 || EndPos == NULL) Áß¿¡ EndPos°¡ NULLÀÎ °æ¿ì´Â ¾î¶² °æ¿ìÀÎÁö »ý°¢Çغ¸ÀÚ. ÀÌ Á¶°Ç¹®Àº ±ÛÀÚ Á¤·ÄÀ̰ųª EndPos°¡ ¾øÀ» ¶§¸¦ ÀǹÌÇϸç ÀÌ °æ¿ì ¾ÕÂÊ ´Ü¾î ½ÃÀÛÀ§Ä¡¸¦ ãÁö ¾Ê°í ·çÇÁ Å»Ãâ½ÃÀÇ À§Ä¡ÀÎ p¸¦ ÃëÇÏ°Ô µÈ´Ù. EndPos°¡ NULLÀ̶ó´Â Á¶°ÇÀº ¼±Á¤µÈ Èĺ¸ À§Ä¡°¡ ¾ø´Ù´Â ¶æÀ̸ç Áï, ´Ü¾î Á¤·Ä »óÅÂÀε¥ ÁÙ ³»¿¡´Â ÀÚ¸¦¸¸ÇÑ ´Ü¾î°¡ ¾ø´Ù´Â ¶æÀÌ´Ù.

À̶§´Â ´Ü¾î Á¤·ÄÀ» ÇÏÁö ¸øÇÏ°í ¾î¿ ¼ö ¾øÀÌ ±ÛÀÚ ´ÜÀ§·Î Á¤·ÄÀ» ÇØ¾ß ÇÑ´Ù. ¾Õ¿¡¼­ ¸Þ¸ðÀåÀÇ ¿¹¸¦ º¸¸é¼­ ÀÌ·± °æ¿ì¸¦ ¼³¸íÇß¾ú´Âµ¥ ¹Ù·Î ÀÌ Äڵ尡 ±× ÀÏÀ» ´ã´çÇÏ°í ÀÖ´Ù. ¸¸¾à ÀÌ Á¶°Ç¹®ÀÌ ¾ø´Ù¸é ¿µ¹®ÀÚ¸¦ °ø¹é¾øÀÌ °è¼Ó ¾´ ÁÙ¿¡¼­´Â ÁÙÀÇ ³¡À» EndPosÀÇ ÃʱⰪÀÎ NULLÀ̶ó°í Á¶»çÇÏ°Ô µÉ °ÍÀÌ¸ç ±× ÀÌÈÄ¿¡ ÇÁ·Î±×·¥ÀÌ ¾î¶»°Ô µ¹¾Æ°¥Áö´Â °¡È÷ ÁüÀÛÀÌ °£´Ù.

ÀÌ Ã³¸® ¿Ü¿¡µµ À©µµ¿ì ÆøÀÌ Áö³ªÄ¡°Ô Á¼Àº °æ¿ìµµ ó¸®ÇØ¾ß Çϳª ÀÌ ¿¹Á¦ÀÇ ¸ÞÀÎ À©µµ¿ì´Â ÃÖ¼ÒÇÑÀÇ ÆøÀ» È®º¸ÇÏ°í ÀÖÀ¸¹Ç·Î ¾ÆÁ÷ ±×·² ÇÊ¿ä°¡ ¾ø´Ù. ´ÙÀ½¿¡ ÄÁÆ®·Ñ·Î ¸¸µé ¶§ ÃÖ¼Ò Á¤·ÄÆøÀ» ó¸®ÇÏ°Ô µÉ °ÍÀÌ´Ù.