³ª. ÁÙ Á¤º¸ Á¶»ç

pLine¿¡ ÁÙÀÇ Á¤º¸¸¦ Á¶»çÇÏ´Â ÇÔ¼ö¸¦ ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÑ´Ù. ¹®¼­ Àüü¸¦ µü ÇÑ ¹ø¸¸ Á¤·ÄÇϹǷΠÇÔ¼ö ³»¿ëÀº ¾ÆÁÖ °£´ÜÇÏ´Ù.

 

void UpdateLineInfo()

{

     int l,s,e;

 

     for (l=0;;l++) {

          GetLine(l,s,e);

 

          pLine[l].Start=s;

          pLine[l].End=e;

          if (s==-1) {

               TotalLine=l;

               break;

          }

     }

}

 

0¹ø° ÁÙºÎÅÍ GetLineÀ» È£ÃâÇÏ¿© ÁÙ Á¤º¸¸¦ Á¶»çÇ쵂 GetLineÀÌ s·Î -1À» ¸®ÅÏÇÒ ¶§±îÁö, Áï ¹®¼­ÀÇ ³¡±îÁö ¹Ýº¹ÇÑ´Ù. ±×·¡¼­ ÀÌ ÇÔ¼ö°¡ È£ÃâµÇ¸é ¹®¼­ÀÇ Ã³À½ºÎÅÍ ³¡±îÁö ½ºÄµÇϸ鼭 ÁÙ Á¤º¸¸¦ ¹è¿­¿¡ ´Ù½Ã ÀÛ¼ºÇÏ°Ô µÈ´Ù. ·çÇÁ°¡ Á¾·áµÉ ¶§ TotalLine º¯¼ö´Â ¹®¼­ÀÇ ÃÑ ÁÙ ¼ö¸¦ °¡Áö°Ô µÉ °ÍÀÌ´Ù.

ÁÙ Á¤º¸´Â ¹®¼­°¡ Á¶±ÝÀÌ¶óµµ º¯°æµÇ¸é ´Ù½Ã ÀÛ¼ºÇØ¾ß ÇϹǷΠ¹öÆÛ¸¦ Á¶ÀÛÇÏ´Â ¸ðµç ÇÔ¼ö¿¡¼­ UpdateLineInfo ÇÔ¼ö¸¦ È£ÃâÇØ¾ß Çϴµ¥ ´Ù¼¸ ±ºµ¥°¡ ÀÖ´Ù. ¸ÕÀú ¹öÆÛ¸¦ ÃʱâÈ­ÇÏ´Â OnCreate¿¡¼­ºÎÅÍ ÁÙ Á¤º¸¸¦ ÃʱâÈ­ÇÑ´Ù.

 

BOOL OnCreate(HWND hWnd, LPCREATESTRUCT lpCreateStruct)

{

     ....

    UpdateLineInfo();

     UpdateScrollInfo();

     ....

 

ÃÖÃÊ ºó ¹®¼­·Î ½ÃÀÛÇϹǷΠÀ̶§ÀÇ È£ÃâÀº pLine[0]¸¸ ÃʱâÈ­ÇÏ°Ô µÉ °ÍÀÌ´Ù. º¯°æµÈ ÁÙ Á¤º¸´Â ½ºÅ©·Ñ ¹üÀ§ ¼³Á¤¿¡ °ð¹Ù·Î »ç¿ëµÇ¹Ç·Î UpdateScrollInfoº¸´Ù ¸ÕÀú È£ÃâµÇ¾î¾ß ÇÑ´Ù. À©µµ¿ìÀÇ Å©±â°¡ º¯°æµÉ ¶§µµ ÁÙ Á¤º¸¸¦ ´Ù½Ã ÀÛ¼ºÇÑ´Ù.

 

void OnSize(HWND hWnd, UINT state, int cx, int cy)

{

     if (state != SIZE_MINIMIZED) {

        if (nWrap) {

            UpdateLineInfo();

        }

          UpdateScrollInfo();

          if (GetFocus()==hWnd) {

               SetCaret();

          }

     }

}

 

´Ü, ÀÚµ¿°³Çà »óÅ°¡ ¾Æ´Ò ¶§´Â À©µµ¿ì Å©±â º¯°æ ÀÚü°¡ Á¤·Ä¿¡ ¿µÇâÀ» ÁÖÁö ¾ÊÀ¸¹Ç·Î nWrapÀÌ 0ÀÏ ¶§´Â ±»ÀÌ ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÏÁö ¾Ê¾Æµµ µÈ´Ù. ±× ¿ÜÀÇ °æ¿ì´Â ÆøÀÌ ¹Ù²ð ¶§¸¶´Ù °¢ ÁÙÀÇ ³¡ÀÌ ¹Ù²î¹Ç·Î ÀçÁ¤·ÄÇØ¾ß ÇÑ´Ù. ¹öÆÛ¿¡ ¹®ÀÚ¿­À» »ðÀÔ, »èÁ¦ÇÏ´Â Insert, Deleteµµ ´ç¿¬È÷ ÀÌ ÇÔ¼ö¸¦ È£ÃâÇØ¾ß ÇÑ´Ù. ÇÑ ±ÛÀÚ¶óµµ »ðÀԵǰųª »èÁ¦µÇ¸é ¹®¼­ ÀüüÀÇ Á¤·Ä »óÅ°¡ ¹Ù²ð ¼ö ÀÖ´Ù.

 

void Insert(int nPos, TCHAR *str)

{

     ....

     bLineEnd=FALSE;

    UpdateLineInfo();

     UpdateScrollInfo();

}

 

void Delete(int nPos, int nCount)

{

     ....

    UpdateLineInfo();

     UpdateScrollInfo();

}

 

º¸´Ù½ÃÇÇ Ç×»ó ½ºÅ©·Ñ Á¤º¸¸¦ °»½ÅÇϱâ Àü¿¡ Á¤·ÄÁ¤º¸¸¦ ¸ÕÀú °»½ÅÇØ¾ß ÇÑ´Ù. ÀçÁ¤·ÄÀ» ÇØ¾ß ÇÏ´Â ¸¶Áö¸· ½ÃÁ¡Àº ÀÚµ¿°³Çà »óŸ¦ º¯°æÇÏ´Â SetWrap ÇÔ¼ö¿¡¼­ÀÌ´Ù. Á¤·Ä¹æ½ÄÀÌ ¹Ù²î¸é ÁÙÀÇ ½ÃÀÛ°ú ³¡µµ µû¶ó¼­ ¹Ù²î°Ô µÈ´Ù.

 

int SetWrap(int aWrap)

{

     ....

    UpdateLineInfo();

     UpdateScrollInfo();

     SetCaret();

 

     return Old;

}

 

¹®¼­³ª Á¤·Ä »óÅ¿¡ º¯È­°¡ »ý±â´Â ¸ðµç ºÎºÐ¿¡¼­ UpdateLineInfo ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ÁÙ Á¤º¸¸¦ ´Ù½Ã ¸¸µéµµ·Ï ÇßÀ¸¹Ç·Î pLine ¹è¿­Àº Ç×»ó Á¦´ë·Î µÈ ÁÙ Á¤º¸¸¦ °¡Áö°í ÀÖÀ» °ÍÀÌ´Ù.