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 ¹è¿Àº Ç×»ó Á¦´ë·Î µÈ ÁÙ Á¤º¸¸¦ °¡Áö°í ÀÖÀ» °ÍÀÌ´Ù.