ÆÄÀÏ ÀÔÃâ·Â ±â´ÉÀÌ µé¾î°¡¸é ¹®¼¸¦ ¸¸µé´ø Áß¿¡ ÆíÁýÀ» Ãë¼ÒÇÒ ¼öµµ ÀÖ°í ´Ù¸¥ ¹®¼¸¦ ºÒ·¯ ¿Ã ¼öµµ ÀÖ´Ù. À̶§¸¶´Ù ApiEdit´Â »õ ¹®¼¸¦ ¸¸µé±â À§ÇØ ÃʱâȵǾî¾ß ÇÑ´Ù. Áö±Ý±îÁö´Â ¸ðµç Ãʱâȸ¦ OnCreate¿¡¼ Çß¾ú´Âµ¥ ÄÁÆ®·Ñ »ý¼º ÈÄ ¹®¼¸¦ »õ·Î ¸¸µé°Å³ª ±âÁ¸ ¹®¼¸¦ Àоî¿Ã ¼ö ¾ø¾ú±â ¶§¹®¿¡ º° ¹®Á¦°¡ ¾ø¾ú´Ù. ÇÏÁö¸¸ ÀÌÁ¦´Â ÆíÁýÁß¿¡ »õ ¹®¼¸¦ ¸¸µé ¼ö Àֱ⠶§¹®¿¡ OnCreate¿¡ ÀÖ´Â ÃʱâÈ ÄÚµå Áß ÀϺδ ½ÇÇàÁß¿¡µµ È£ÃâµÇ¾î¾ß ÇÑ´Ù.
Áï, ÄÁÆ®·Ñ Àü¿ªÀûÀÎ ÃʱâÈ¿Í ¹®¼ÆíÁýÀ» À§ÇÑ ÃʱâÈ Äڵ尡 ³ª´©¾îÁ®¾ß ÇÑ´Ù. ¹®¼¿Í °ü·ÃµÈ ÃʱâÈ Äڵ带 º°µµÀÇ ÇÔ¼ö¿¡ ÀÛ¼ºÇÏ°í »õ ¹®¼¸¦ ¸¸µé ¶§¸¶´Ù ÀÌ ÇÔ¼ö¸¦ È£ÃâÇϵµ·Ï ¹Ù²Ù¾î º¸ÀÚ. InitDocÀ̶ó´Â ¸â¹öÇÔ¼ö¸¦ Ãß°¡ÇÏ°í OnCreate¿¡ ÀÖ´Â ÃʱâÈ ÄÚµå Áß ¹®¼¿Í °ü·ÃµÈ Äڵ带 ¸ðµÎ °¡Á® ¿Â´Ù. ApiEdit.h¿¡ ÇÔ¼öÀÇ ¿øÇüÀ» ¼±¾ðÇÏ°í ApiEdit.cpp¿¡ ÇÔ¼öÀÇ Äڵ带 ÀÛ¼ºÇÏ¸é µÈ´Ù. ¸â¹öÇÔ¼ö°¡ Ãß°¡µÉ ¶§ Çì´õ ÆÄÀÏ¿¡ ¿øÇü ¼±¾ðÀ» »©¸ÔÁö ¸»µµ·Ï ÇÏÀÚ.
void CApiEdit::InitDoc()
{
int i;
if (buf) {
free(buf);
}
buflen=1024;
buf=(TCHAR *)malloc(buflen);
memset(buf,0,buflen);
doclen=0;
Linelen=100;
if (pLine) {
free(pLine);
}
pLine=(tagLine *)malloc(sizeof(tagLine)*Linelen);
for (i=0;i<Linelen;i++) {
pLine[i].Start=-1;
}
bReadOnly=FALSE;
bOvr=FALSE;
off=0;
PrevX=0;
bLineEnd=FALSE;
xMax=1024;
xPos=0;
yPos=0;
SelStart=SelEnd=0;
bModified=FALSE;
ClearBookmark();
UpdateLineInfo();
UpdateScrollInfo();
if (GetFocus()==hWnd) {
SetCaret();
}
Invalidate(-1);
}
»õ·Î ¸¸µé¾îÁö´Â ¹®¼À̹ǷΠoff´Â ´ç¿¬È÷ ¹®¼ óÀ½ÀÎ 0À¸·Î º¯°æµÇ¾î¾ß ÇÏ¸ç ºÏ¸¶Å©´Â ¸ðµÎ ÇØÁ¦ÇÏ°í ½ºÅ©·Ñ À§Ä¡µµ ¹®¼ Á»ó´ÜÀ¸·Î º¯°æÇØ¾ß ÇÑ´Ù. º¸´Ù½ÃÇÇ OnCreate¿¡ ÀÖ´Â ÄÚµå Áß ¹®¼ ÃʱâÈ¿Í °ü·ÃµÈ ÄÚµåµéÀÌ ÀÌ ÇÔ¼ö·Î ¸ðµÎ ¿Å°ÜÁ³´Ù. ¿Å°ÜÁø ÄÚµå ¿Ü¿¡ Ãß°¡µÈ Äڵ嵵 Àִµ¥ ±½°Ô Ç¥½ÃµÈ ÄÚµå´Â »õ·Î Ãß°¡µÈ ÄÚµåÀÌ´Ù.
Àü¿¡´Â ¹öÆÛ¸¦ ÇÑ ¹ø ÇÒ´çÇسõ°í °è¼Ó »ç¿ëÇß¾ú´Âµ¥ ÀÌÁ¦´Â ¹®¼°¡ ¸¸µé¾îÁú ¶§¸¶´Ù ÇÒ´çÀ» ÇØÁ¦ÇÏ°í ´Ù½Ã ÇÒ´çÇØ¾ß ÇÒ ÇÊ¿ä°¡ »ý°å´Ù. ÀÌÀü ¹®¼°¡ 10MB Å©±â¶ó°í Çؼ »õ·Î ¸¸µå´Â ¹®¼µµ À̸¸ÅÀÇ ¸Þ¸ð¸®°¡ ÇÊ¿äÇÑ °ÍÀº ¾Æ´Ï±â ¶§¹®ÀÌ´Ù. ±×·¡¼ buf°¡ ÇÒ´çµÇ¾î ÀÖÀ¸¸é ¸ÕÀú ÇØÁ¦ÇÏ°í ÀÛÀº Å©±â·Î ´Ù½Ã ÇÒ´çÇϵµ·Ï Çß´Ù. ¹®¼°¡ »õ·Î ¸¸µé¾îÁö¹Ç·Î ij·µµµ ´ç¿¬È÷ Á»ó´ÜÀ¸·Î À̵¿ÇØ¾ß ÇÑ´Ù. Á¦ÀÏ ³¡¿¡ ÀÖ´Â Invalidate¹®Àº ȸéÀ» ¿ÏÀüÈ÷ Áö¿ì°í ´Ù½Ã ±×¸®µµ·Ï Çϴµ¥ OnCreate¿¡¼´Â ÀÌ Ã³¸®°¡ ÇÊ¿ä¾ø¾úÁö¸¸ ¹®¼ÆíÁýÁß¿¡ Ãʱâȸ¦ ÇÏ´Â °ÍÀ̹ǷΠÀÌÀü ¹®¼ ³»¿ëÀ» ȸ鿡¼ Áö¿ö¾ß ÇÑ´Ù.
OnCreate´Â ¸¹Àº ¾çÀÇ Äڵ带 InitDoc¿¡°Ô »¯±â°í ÀÚ½ÅÀº InitDocÀ» È£ÃâÇÔÀ¸·Î½á »ý¼º½ÃÀÇ Ãʱâȸ¦ ´ë½ÅÇÑ´Ù.
BOOL CApiEdit::OnCreate(HWND hWnd, LPCREATESTRUCT lpCreateStruct)
{
HDC hdc;
TEXTMETRIC tm;
MySetImeMode(hWnd,TRUE);
bComp=FALSE;
hdc=GetDC(hWnd);
GetTextMetrics(hdc,&tm);
FontHeight=tm.tmHeight;
LineRatio=120;
LineHeight=int(FontHeight*LineRatio/100);
FontWidth=tm.tmAveCharWidth;
PrepareCharWidth(hdc);
ReleaseDC(hWnd,hdc);
nWrap=2;
bNoFirstSpace=FALSE;
TabWidth=4;
TabSize=FontWidth*TabWidth;
bCapture=FALSE;
HideSelType=1;
MarginWidth=25;
MarColor1=RGB(192,192,192);
MarColor2=RGB(160,160,160);
bShowLineNum=FALSE;
NumColor=RGB(0,0,0);
MarkColor=RGB(255,255,0);
bShowTab=FALSE;
bShowEnter=FALSE;
bShowSpace=FALSE;
ShowTabType=1;
ShowEnterType=1;
ShowSpaceType=0;
CodeColor=RGB(128,128,128);
nShowCurLine=0;
CurColor=RGB(255,255,0);
bSelLine=FALSE;
SelStartLine=0;
bDragSel=FALSE;
bWantTab=TRUE;
SumDelta=0;
bHideCaret=FALSE;
InitDoc();
return TRUE;
}
³²Àº ÄÚµå´Â ÁÙ°£, ÅÇÅ©±â µîÀÇ º¯¼ö ÃʱâÈ¿Í ÆùÆ® »ý¼º, ¹®ÀÚÆø °è»ê µî°ú °°ÀÌ ¹®¼¿Í Á÷Á¢ÀûÀÎ »ó°üÀÌ ¾ø´Â ÄÚµåµé»ÓÀÌ´Ù. ÀÌ ÄÚµåµéµµ Àá½Ã ÈÄ¸é ´Ù¸¥ ¼³Á¤ º¯°æ ÇÔ¼ö¿¡°Ô °ñ°í·ç ³ª´©¾îÁÖ°Ô µÉ °ÍÀÌ´Ù. È£½ºÆ®¿¡¼ InitDoc¸¸ È£ÃâÇÏ¸é ¾ðÁ¦µçÁö »õ ¹®¼¸¦ ÆíÁýÇÒ ¼ö ÀÖ´Ù.