¹Ù²Ù±â´Â Á¶°Ç¿¡ ¸Â´Â ¹®ÀÚ¿À» ã¾Æ ´Ù¸¥ ¹®ÀÚ¿·Î º¯°æÇÏ´Â ±â´ÉÀÌ´Ù. ÀÏ´Ü ¹®ÀÚ¿À» ã¾Æ¾ß ¹Ù²Ù±â¸¦ ÇÒ ¼ö ÀÖÀ¸¹Ç·Î ã±â ±â´ÉÀÇ È®ÀåÀ̶ó°í »ý°¢ÇÒ ¼ö ÀÖ´Ù. ´ëÈ»óÀÚÀÇ ¸ð¾çÀº ´ÙÀ½°ú °°´Ù.
±â´ÉÀÌ À¯»çÇϱ⠶§¹®¿¡ ´ëÈ»óÀÚµµ ºñ½ÁÇÏ´Ù. °Ë»ö ¿Ï·á ÈÄ ´ëÈ»óÀÚ ´Ý±â ¿É¼ÇÀÌ »ç¶óÁ³°í ´ë½Å ¹Ù²Ü ³»¿ë ÄÞº¸¹Ú½º¿Í ¹Ù²Ù±â, ¸ðµÎ ¹Ù²Ù±â ¹öÆ°ÀÌ Ãß°¡µÇ¾ú´Ù. ´ëÈ»óÀÚ ÇÁ·Î½ÃÀú´Â ã±â ´ëÈ»óÀÚ¿Í °øÀ¯ÇÑ´Ù. ¿É¼ÇÀ» ó¸®ÇÏ´Â ºÎºÐµéÀÌ ºñ½ÁÇϱ⠶§¹®¿¡ ±»ÀÌ µû·Î ÇÁ·Î½ÃÀú¸¦ ¸¸µé ÇÊ¿ä°¡ ¾ø´Ù. ã±â ´ëÈ»óÀÚ ÇÁ·Î½ÃÀú¿¡ ¸î °¡Áö Äڵ常 Ãß°¡ÇÏ¸é µÈ´Ù.
BOOL CALLBACK FindDlgProc(HWND hDlg,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
switch(iMessage)
{
case WM_INITDIALOG:
....
RefillHistory(GetDlgItem(hDlg,IDC_FIND_WHAT),arFind[0]);
RefillHistory(GetDlgItem(hDlg,IDC_FIND_TO),arFind[1]);
SendMessage(GetDlgItem(hDlg,IDC_FIND_WHAT), CB_LIMITTEXT, (WPARAM)255, 0);
SendMessage(GetDlgItem(hDlg,IDC_FIND_TO), CB_LIMITTEXT, (WPARAM)255, 0);
SendMessage(hDlg,WM_COMMAND,MAKEWPARAM(IDC_FIND_WHAT,CBN_EDITCHANGE),0);
return TRUE;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDC_FIND_WHAT:
switch (HIWORD(wParam)) {
case CBN_EDITCHANGE:
if (GetWindowTextLength(GetDlgItem(hDlg,IDC_FIND_WHAT)) == 0) {
EnableWindow(GetDlgItem(hDlg,IDC_BTNFIND),FALSE);
} else {
EnableWindow(GetDlgItem(hDlg,IDC_BTNFIND),TRUE);
}
SendMessage(hDlg,WM_COMMAND,MAKEWPARAM(IDC_FIND_TO,CBN_EDITCHANGE),0);
break;
case CBN_SELCHANGE:
PostMessage(hDlg,WM_COMMAND,MAKEWPARAM(IDC_FIND_WHAT,CBN_EDITCHANGE),0);
break;
}
break;
case IDC_FIND_TO:
switch (HIWORD(wParam)) {
case CBN_EDITCHANGE:
if (GetWindowTextLength(GetDlgItem(hDlg,IDC_FIND_TO)) == 0 ||
GetWindowTextLength(GetDlgItem(hDlg,IDC_FIND_WHAT)) == 0) {
EnableWindow(GetDlgItem(hDlg,IDC_BTNREPLACE),FALSE);
EnableWindow(GetDlgItem(hDlg,IDC_BTNREPLACEALL),FALSE);
} else {
EnableWindow(GetDlgItem(hDlg,IDC_BTNREPLACE),TRUE);
EnableWindow(GetDlgItem(hDlg,IDC_BTNREPLACEALL),TRUE);
}
break;
case CBN_SELCHANGE:
PostMessage(hDlg,WM_COMMAND,MAKEWPARAM(IDC_FIND_TO,CBN_EDITCHANGE),0);
break;
}
break;
case IDCANCEL:
DestroyWindow(hDlg);
break;
case IDC_BTNFIND:
case IDC_BTNREPLACE:
case IDC_BTNREPLACEALL:
....
GetDlgItemText(hDlg,IDC_FIND_TO,szTemp,255);
if (lstrlen(szTemp)) {
arFind[1].Add(szTemp);
RefillHistory(GetDlgItem(hDlg,IDC_FIND_TO),arFind[1]);
}
switch (LOWORD(wParam)) {
case IDC_BTNFIND:
SendMessage(GetParent(hDlg),WM_USER+2,1,0);
if (FindFlag & AE_FIND_CLOSE) {
DestroyWindow(hDlg);
}
break;
case IDC_BTNREPLACE:
SendMessage(GetParent(hDlg),WM_USER+2,2,0);
break;
case IDC_BTNREPLACEALL:
SendMessage(GetParent(hDlg),WM_USER+2,3,0);
break;
}
return TRUE;
}
return FALSE;
}
return FALSE;
}
WM_INITDIALOG¿¡¼´Â arFind[1] ¸ñ·ÏÀ» IDC_FIND_TO ÄÞº¸¹Ú½º¿¡ ´ëÀÔÇÑ´Ù. ¹Ù²Ù±â, ¸ðµÎ ¹Ù²Ù±â ¹öÆ°Àº ãÀ» ³»¿ë°ú ¹Ù²Ü ³»¿ëÀÌ ¸ðµÎ ÀԷµǾî ÀÖ¾î¾ß »ç¿ë °¡´ÉÇÏ´Ù. ±×·¡¼ IDC_FIND_TO ÄÞº¸¹Ú½ºÀÇ ±æÀÌ¿Í IDC_FIND_WHAT ÄÞº¸¹Ú½ºÀÇ ±æÀÌ°¡ ¸ðµÎ 0º¸´Ù Ä¿¾ß¸¸ »ç¿ë Çã°¡ µÈ´Ù. IDC_FIND_WHATÀÌ ÆíÁýµÉ ¶§µµ ÀÌ Á¡°ËÀ» ÇØ¾ß ÇÑ´Ù.
¹Ù²Ù±â, ¸ðµÎ ¹Ù²Ù±â ¹öÆ°À» Ŭ¸¯Çϸé ÄÁÆ®·Ñ¿¡ ¼³Á¤µÈ ¿É¼Ç°ú ãÀ» ³»¿ë, ¹Ù²Ü ³»¿ëÀ» ÀоîµéÀδÙ. ÀÐÀº °á°ú´Â arFind[0], arFind[1] ¸ñ·ÏÀÇ Ã¹ Ç׸ñ°ú FindFlag¿¡ ÀúÀåµÉ °ÍÀÌ´Ù. ã±â ±â´É°ú ¸¶Âù°¡Áö·Î ¸ÞÀÎ À©µµ¿ì·Î WM_USER+2 ¸Þ½ÃÁö¸¦ º¸³»µÇ wParamÀº °¢°¢ 2,3À¸·Î Àü´ÞÇÏ¿´´Ù. Áï WM_USER+2´Â ã±â/¹Ù²Ù±â ´ëÈ»óÀڷκÎÅÍ ¸ÞÀÎ À©µµ¿ì·ÎÀÇ ¿äûÀ» Àü´ÞÇÏ´Â ¸Þ½ÃÁöÀ̸ç wParamÀº ´ÙÀ½°ú °°ÀÌ Á¤ÀǵǾú´Ù.
wParam |
¸í·É |
1 |
ã±â |
2 |
¹Ù²Ù±â |
3 |
¸ðµÎ ¹Ù²Ù±â |
¸ÞÀÎ À©µµ¿ìÀÇ OnUser2 ÇÔ¼ö´Â wParam°ª¿¡ µû¶ó ã±â ¹× ¹Ù²Ù±â¸¦ ÇÏ¸é µÈ´Ù. ¸Þ´ºÀÇ ¹Ù²Ù±â Ç׸ñÀ» ¼±ÅÃÇÏ¸é ¹Ù²Ù±â ´ëÈ»óÀÚ¸¦ º¸¿©ÁØ´Ù.
void OnCommand(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
....
case IDM_SEARCH_REPLACE:
if (!IsWindow(g_FindDlg)) {
g_FindDlg=CreateDialog (g_hInst,MAKEINTRESOURCE(IDD_REPLACE),hWnd,FindDlgProc);
ShowWindow(g_FindDlg,SW_SHOW);
} else {
SetFocus(g_FindDlg);
}
break;
´ëÈ»óÀÚ¸¦ º¸¿©ÁÖ´Â Äڵ嵵 ã±â ´ëÈ»óÀÚ¿Í °ÅÀÇ µ¿ÀÏÇÏ´Ù. ´ëÈ»óÀÚ ÅÛÇø®Æ®ÀÇ ID¸¸ ´Ù¸¦ »Ó ´ëÈ»óÀÚ ÇÁ·Î½ÃÀú±îÁö µ¿ÀÏÇÏ´Ù. ã±â µ¿ÀÛÀÇ ÁÖü°¡ CApiEdit °´Ã¼À̵íÀÌ ¹Ù²Ù±â µ¿ÀÛµµ CApiEdit°¡ Á÷Á¢ ÇØ¾ß ÇÑ´Ù. CApiEdit Ŭ·¡½º¿¡ ¹Ù²Ù±â ÇÔ¼ö¸¦ Ãß°¡Çϵµ·Ï ÇÏÀÚ.
int CApiEdit::ReplaceText(int nPos, TCHAR *what, DWORD dwFlag, TCHAR *to)
{
int len;
TCHAR *pSel;
TCHAR *pWhat;
int Result;
if (SelStart == SelEnd) {
if (FindText(nPos,what,dwFlag) == TRUE) {
Result=1;
} else {
Result=0;
}
} else {
pWhat=(TCHAR *)malloc(lstrlen(what)+1);
lstrcpy(pWhat,what);
len=abs(SelStart-SelEnd);
pSel=(TCHAR *)malloc(len+1);
lstrcpyn(pSel,buf+min(SelStart,SelEnd),len+1);
if ((dwFlag & AE_FIND_MATCHCASE) == 0) {
CharUpper(pWhat);
CharUpper(pSel);
}
if (lstrcmp(pWhat,pSel) != 0) {
if (FindText(nPos,what,dwFlag) == TRUE) {
Result=1;
} else {
Result=0;
}
} else {
StartUndoGroup();
DeleteSelection();
Insert(off,to);
off+=lstrlen(to);
SetCaret();
Invalidate(-1);
FindText(off,what,dwFlag);
Result=2;
EndUndoGroup();
}
free(pWhat);
free(pSel);
}
return Result;
}
¼±Åÿµ¿ªÀÌ ¾ø°Å³ª ÀÖ´õ¶óµµ °Ë»ö ´ë»ó ¹®ÀÚ¿ÀÌ ¾Æ´Ï¸é ¹Ù²Ù±â¸¦ ÇÏÁö ¾Ê°í ´ÙÀ½ ã±â¸¦ ½ÇÇàÇÑ´Ù. Áï ÀÌ ÇÔ¼ö´Â ¼±ÅÃµÈ ÅؽºÆ®°¡ °Ë»ö ´ë»ó°ú °°À» ¶§¸¸ ¹Ù²Ù±â¸¦ ÇÏ°í ±×·¸Áö ¾ÊÀ» °æ¿ì´Â ã±â¿Í µ¿ÀÏÇÑ µ¿ÀÛÀ» ÇÑ´Ù. ¹Ù²Ù±â´Â ¸ÕÀú ¹Ù²Ü ´ë»óÀ» ¼±ÅÃÇÑ ÈÄ ´Ù¸¥ ÅؽºÆ®·Î ¹Ù²Ù´Â °ÍÀ̹ǷΠ¹Ù²Ü ´ë»óÀÌ ¼±ÅõǾî ÀÖÁö ¾ÊÀ¸¸é ¼±ÅÃÀ» ¸ÕÀú ÇÏ´Â °ÍÀÌ ¼ø¼¿¡ ¸Â´Ù.
¹Ù²Ü ´ë»óÀÌ ¼±ÅõǾî ÀÖÀ¸¸é ¹®ÀÚ¿À» ´ëüÇϴµ¥ ¹æ¹ýÀº ¾ÆÁÖ ¿ø·ÐÀûÀÌ´Ù. DeleteSelectionÀ¸·Î ¼±ÅÃµÈ ÅؽºÆ®¸¦ ¸ÕÀú »èÁ¦ÇÏ°í ¹Ù²Ü ¹®ÀÚ¿À» ±× À§Ä¡¿¡ »ðÀÔÇØ ³ÖÀ¸¸é °¨ÂÊ°°ÀÌ ¹®ÀÚ¿ÀÌ ´ëüµÉ °ÍÀÌ´Ù. À̶§ »èÁ¦¿Í »ðÀÔÀº ¹Ù²Ù±â µ¿ÀÛ Çϳª¸¦ ±¸¼ºÇÏ´Â ¼¼ºÎ µ¿ÀÛÀ̹ǷΠÇϳªÀÇ ÆíÁý µ¿ÀÛÀ¸·Î º¸¾Æ¾ß ÇÏ¸ç ±×·¡¼ µÎ °³ÀÇ Ãë¼Ò ·¹Äڵ带 ±×·ìÀ¸·Î ¹¾î ÁÖ¾ú´Ù. <Ctrl+Z>·Î ¹Ù²Ù±â¸¦ Ãë¼ÒÇÏ¸é ¹Ù²Ù±â ÀüÀÇ »óÅ·ΠÁ¤È®ÇÏ°Ô µ¹¾Æ°¥ °ÍÀÌ´Ù.
¹Ù²Ù±â´Â ¿©·¯ ¹ø ¹Ýº¹ÀûÀ¸·Î ½ÇÇàÇÒ °æ¿ì°¡ ¸¹À¸¹Ç·Î ¹Ù²Ù±â¸¦ ÇÑ ÈÄ ´ÙÀ½ ¹®ÀåÀ» ¼±ÅÃÇÏ¿© °è¼Ó ¹Ù²Ù±â¸¦ ÇÒ ¼ö ÀÖµµ·Ï Çß´Ù. ÀÌ ÇÔ¼ö´Â ¹Ù²Ù±â µ¿ÀÛÀÇ °á°ú¸¦ ¸®ÅÏÇϴµ¥ ¼¼ °¡Áö ¸®ÅÏ°ªÀ» °¡Áø´Ù. ¹Ù²Ü ´ë»óÀÌ ¼±ÅõǾî ÀÖÁö ¾Ê¾Æ ã±â¸¸ ÇßÀ¸¸é 1À» ¸®ÅÏÇϸç ã±â¿Í ¹Ù²Ù±â¸¦ ´Ù ÇßÀ¸¸é 2¸¦ ¸®ÅÏÇÏ°í °Ë»ö¿¡ ½ÇÆÐÇϸé 0À» ¸®ÅÏÇÑ´Ù. È£½ºÆ®´Â ÀÌ ¸®ÅÏ°ªÀ» º¸°í ¸î °³ÀÇ ¹®ÀÚ¿ÀÌ ´ëüµÇ¾ú´ÂÁö Çì¾Æ¸®¸ç ã±â °á°ú¸¦ »ç¿ëÀÚ¿¡°Ô º¸¿©ÁÙ °ÍÀÌ´Ù.
ÀÌ ÇÔ¼ö´Â È£½ºÆ®ÀÇ OnUser2¿¡¼ È£ÃâµÈ´Ù. OnUser2´Â ã±â/¹Ù²Ù±â ´ëÈ»óÀڷκÎÅÍÀÇ ¿äûÀ» ¹Þ¾Æ wParam°ª¿¡ µû¶ó ApiEdit¿¡°Ô ¿äûÀ» Àü´ÞÇϸç Á¤È®ÇÑ µ¿ÀÛÀ» À§ÇÑ ¸î °¡Áö 󸮸¦ ÇÑ´Ù. ÄÚµå´Â ´ÙÀ½°ú °°´Ù.
void OnUser2(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
HWND hActive;
SInfo *pSi;
int i;
DWORD tFlag;
TCHAR Mes[512];
if (IsWindowEnabled(hWnd)==FALSE)
return;
hActive=(HWND)SendMessage(g_hMDIClient,WM_MDIGETACTIVE,0,NULL);
if (hActive == NULL) {
return;
}
pSi=(SInfo *)GetWindowLong(hActive,0);
switch (wParam) {
case 1:
if (pSi->Ae.FindText(-1,arFind[0].Get(0), FindFlag) == FALSE) {
MessageBox(hWnd,"ã´Â ¹®ÀÚ¿ÀÌ ¾ø½À´Ï´Ù.","¾Ë¸²",MB_OK);
}
break;
case 2:
if (pSi->Ae.ReplaceText(-1,arFind[0].Get(0), FindFlag,arFind[1].Get(0)) == 0) {
MessageBox(hWnd,"ã´Â ¹®ÀÚ¿ÀÌ ¾ø½À´Ï´Ù.","¾Ë¸²",MB_OK);
}
break;
case 3:
int Result;
pSi->Ae.StartUndoGroup();
for (i=0;;) {
tFlag=FindFlag;
tFlag &= ~AE_FIND_WRAP;
Result=pSi->Ae.ReplaceText(-1,arFind[0].Get(0), tFlag,arFind[1].Get(0));
UpdateWindow(pSi->Ae.hWnd);
if (Result==0)
break;
if (Result==2)
i++;
}
pSi->Ae.EndUndoGroup();
if (i==0) {
lstrcpy(Mes,"ã´Â ¹®ÀÚ¿ÀÌ ¾ø½À´Ï´Ù");
} else {
wsprintf(Mes, "ÃÑ %d°³ÀÇ \"%s\"¹®ÀÚ¿À» \"%s\"·Î ¹Ù²Ù¾ú½À´Ï´Ù",
i,arFind[0].Get(0), arFind[1].Get(0));
}
MessageBox(hWnd,Mes,"¾Ë¸²",MB_OK);
break;
}
}
ÇÑ ¹ø¸¸ ¹Ù²Ù±â¸¦ ÇÒ ¶§´Â ReplaceText¸¦ È£ÃâÇÏ°í ±× °á°ú¸¦ »ç¿ëÀÚ¿¡°Ô ¾Ë·Á Áֱ⸸ ÇÏ¸é µÈ´Ù. ¸ðµÎ ¹Ù²Ù±â¸¦ ÇÒ ¶§´Â µÇµ¹¸®±â(WRAP) ¿É¼ÇÀ» Àá½Ã ²¨ µÎ¾î¾ß ÇÑ´Ù. ¿Ö³ÄÇÏ¸é ¹Ù²Û °á°ú °Ë»ö ´ë»ó ¹®ÀÚ¿ÀÌ ¾ÆÁ÷µµ ³²¾Æ ÀÖÀ» ¼ö Àֱ⠶§¹®ÀÌ´Ù. ¡®¹Ùº¸¡¯¸¦ ¡®ÃµÀ硯·Î ¸ðµÎ ¹Ù²Û´Ù¸é ¸ðµç ¹Ùº¸°¡ õÀç°¡ µÊÀ¸·Î½á ¹®Á¦°¡ ¾øÁö¸¸ ¡®¹Ùº¸¡¯¸¦ ¡®¾È¹Ùº¸¡¯·Î ¹Ù²Û´Ù¸é ¹Ù²Û °á°ú ¿©ÀüÈ÷ ¡®¹Ùº¸¡¯¶ó´Â ¹®ÀÚ¿ÀÌ ³²¾Æ ÀÖÀ¸¹Ç·Î WRAP ¿É¼ÇÀÌ ÄÑÁø »óÅ¿¡¼´Â ¹«ÇÑ·çÇÁ¿¡ ºüÁ® ¹ö¸± °ÍÀÌ´Ù. ±×·¡¼ ¸ðµÎ ¹Ù²Ù±â¸¦ ÇÒ ¶§´Â »ç¿ëÀÚ°¡ Á¤ÇÑ ¿É¼ÇÀ» Àá½Ã ¹«½ÃÇÏ°í ¹®¼ ÇöÀç À§Ä¡¿¡¼ºÎÅÍ ³¡±îÁö ÇÑ ¹ø¸¸ ¹Ù²Ù±â¸¦ ¼öÇàÇØ¾ß ÇÑ´Ù.
ÇϳªÀÇ ¹®ÀÚ¿ÀÌ ´ëüµÉ ¶§¸¶´Ù UpdateWindow ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ¹®¼ÀÇ ¾îµðÂëÀ» ¹Ù²Ù°í ÀÖ´Â ÁßÀÎÁö¸¦ º¸¿©ÁÖµµ·Ï ÇÏ¿´´Ù. ÀÌ·¸°Ô ÇÏ¸é ¼Óµµ´Â ¸¹ÀÌ ´À·ÁÁöÁö¸¸ »ç¿ëÀÚ¿¡°Ô ¹®¼º¯°æ »ç½ÇÀ» È®½ÇÇÏ°Ô º¸¿© Áشٴ Á¡¿¡¼ ±àÁ¤ÀûÀÌ´Ù. ÇÏÁö¸¸ ¹®¼ Å©±â°¡ Ä¿Áö¸é ÇÑ ´Ü¾î¸¦ ¹Ù²Ü ¶§¸¶´Ù ÀçÁ¤·ÄÀ» ÇϹǷΠÀÌ·² ¶§´Â UpdateWindow¸¦ ÇÏÁö ¾Ê´Â °ÍÀÌ ´õ ÁÁ´Ù. ÀÌ Ã³¸®´Â ¿É¼ÇÀ¸·Î ¸¸µé¾î µÑ¸¸Çϱ⵵ Çѵ¥ ¿©±â¿¡ ¿Ö UpdateWindow°¡ ÇÊ¿äÇÑÁö´Â Àá½Ã ÈÄ ¶Ç ¿¬±¸Çغ¸ÀÚ.
¸ðµÎ ¹Ù²Ù±â´Â Àüü °úÁ¤ÀÌ ÇϳªÀÇ ÆíÁý µ¿ÀÛÀ̹ǷΠÆíÁý ±×·ìÀ» ±¸¼ºÇÏ°í ÀÖ´Ù. ReplaceText ÇÔ¼ö ³»ºÎ¿¡¼µµ ÆíÁý ±×·ìÀ» ±¸¼ºÇÏ°í ÀÖÁö¸¸ ApiEdit´Â ÆíÁý ±×·ìÀÇ ÁßøÀ» Çã¿ëÇϹǷΠ¾ÈÂÊ ±×·ìÀº ¹«½ÃµÈ´Ù. ¸ðµÎ ¹Ù²Û ÈÄ ´Ü ÇÑ ¹øÀÇ <Ctrl+Z>·Î ¸ðµÎ ¹Ù²Ù±â Ãë¼Ò¸¦ ÇÒ ¼ö ÀÖÀ¸´Ï Âü ¸ÚÁø ÀÏÀÌ´Ù. ¾Õ Àå¿¡¼ Èûµé°Ô ÆíÁý ±×·ìÀ» ¸¸µé¾î ³õÀº ´öÅÃÀÌ´Ù.
±âº»ÀûÀΠã±â/¹Ù²Ù±â ±â´ÉÀÌ ¿Ï¼ºµÇ¾ú´Ù. ´ÙÀ½ ÄÚµå´Â ¹®¼ ºÐ¼® Á¤º¸¸¦ »èÁ¦ÇÏ´Â ÇÔ¼öÀÌ´Ù. ÇÑÂü Àü¿¡ ½Ç½ÀÇÑ ÇÔ¼öÀε¥ ¿Ö °©ÀÚ±â ÀÌ ÇÔ¼ö¸¦ ´Ù½Ã º¸´Â°¡ ÇÏ¸é ¹Ù²Ù±â ±â´É°ú °ü·ÃÀÌ Àֱ⠶§¹®ÀÌ´Ù.
void CParse::DeleteParseInfo(int nLine)
{
int l;
for (l=nLine;;l++) {
if (l>=ParseSize || pInfo[l].pUnit[0].pos == -1)
break;
memset(pInfo[l].pUnit,-1,sizeof(ParseUnit)*pInfo[l].UnitSize);
}
}
ÀÌ ÇÔ¼ö´Â ºÐ¼® Á¤º¸°¡ ÀÛ¼ºµÇ¾î ÀÖ´Â ¸ðµç ÇàÀÇ pUnitÀ» ÃʱâÈÇÔÀ¸·Î½á ºÐ¼® Á¤º¸¸¦ ¹«È¿ÈÇÑ´Ù. ºÐ¼® Á¤º¸ ¹è¿ Á¦ÀÏ ³¡ÁÙÀÇ Ã¹ À¯´ÖÀº Ç×»ó pos°¡ -1À̱⠶§¹®¿¡ ÀÌ Á¶°Ç¸¸À¸·Î ºÐ¼®µÈ ³¡ ÁÙÀ» ãÀ» ¼ö Àִµ¥ ·çÇÁ¸¦ Å»ÃâÇÒ Á¶°Ç¿¡ l>=ParseSizeÁ¶°ÇÀÌ ÇÊ¿äÇÑ ÀÌÀ¯´Â ¹«¾ùÀϱî? ȸ鿡 ÇÑ ¹øÀÌ¶óµµ Ãâ·ÂµÈ ÁÙ¿¡ ´ëÇؼ´Â ºÐ¼® Á¤º¸ ¹è¿ÀÌ ÇÒ´çµÇ¾î ÀÖÀ¸¹Ç·Î »ç½Ç ´ëºÎºÐÀÇ °æ¿ì ÀÌ Á¶°ÇÀº ÇÊ¿ä°¡ ¾ø´Ù.
¾ÆÁÖ Æ¯¼öÇÑ °æ¿ì ¾ÆÁ÷ ÇÒ´çµµ ¾ÈµÈ ÇàÀÇ ºÐ¼® Á¤º¸¸¦ »èÁ¦ÇØ¾ß ÇÒ °æ¿ì°¡ Àִµ¥ ¹Ù·Î ¸ðµÎ ¹Ù²Ù±â¸¦ ÇÒ ¶§ÀÌ´Ù. ¸ðµÎ ¹Ù²Ù±â´Â ¸Þ¸ð¸®¸¸ º¯°æÇÏÁö ȸéÀ» ±×¸®Áö ¾ÊÀ¸¹Ç·Î OnPaint°¡ È£ÃâµÇÁö ¾Ê°í µû¶ó¼ ºÐ¼® Á¤º¸°¡ °»½ÅµÇÁö ¾Ê´Â´Ù. ÇÏÁö¸¸ UpdateLineInfo ÇÔ¼ö´Â ¹Ýº¹ÀûÀ¸·Î È£ÃâµÇ¹Ç·Î ÀÌ ÇÒ´çµÇÁö ¾Ê´Â ÇàÀÇ ºÐ¼® Á¤º¸¸¦ Áö¿ì·Á°í ½ÃµµÇÏ°Ô µÈ´Ù. l>=ParseSize Á¶°ÇÀº ÀÌ·± »óȲÀÏ ¶§¸¦ À§ÇÑ Ãß°¡µÈ °ÍÀÌ¸ç ¸ðµÎ ¹Ù²Ù±â¿¡ UpdateWindow È£ÃâÀÌ ÀÖ´Â ÀÌÀ¯´Â ¹Ù²Ù±â¸¦ ÇÑ ¸ðµç ÁÙ¿¡ ºÐ¼® Á¤º¸¸¦ À§ÇÑ ¸Þ¸ð¸®¸¦ ÇÒ´çÇسõ±â À§ÇؼÀÌ´Ù.