¿©·¯ ÁÙÀ» ÆíÁýÇÒ ¼ö ÀÖ°Ô µÇ¾úÀ¸´Ï ÀÌÁ¦ ´ç¿¬È÷ ¾Æ·¡À§·Îµµ À̵¿ÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ¾Æ·¡ÂÊÀ̳ª À§ÂÊÀ̳ª ³í¸®´Â ºñ½ÁÇϹǷΠ¾Æ·¡ÂÊ À̵¿À» ÁßÁ¡ÀûÀ¸·Î »ìÆì º¸µµ·Ï ÇÏÀÚ. °³³äÀûÀ¸·Î ÇÑ Ä ¾Æ·¡·Î ³»·Á °£´Ù´Â °ÍÀº ¾ÆÁÖ ½±´Ù. ÁÙ¹øÈ£¸¸ Çϳª Áõ°¡½ÃÄÑ ÁÖ°í ¿¹øÈ£´Â ±×´ë·Î À¯ÁöÇÏ¸é µÈ´Ù.
¿ÞÂÊ ±×¸²¿¡¼ ù ¹ø° ÁÙ ¼¼ ¹ø° Ä ¡®Áý¡¯ÀÚ°¡ ÇöÀç À§Ä¡¶ó¸é µÎ ¹ø° ÁÙ ¼¼ ¹ø° ÄÀÎ ¡®¸®¡¯ÀÚ·Î À̵¿ÇÏ¸é µÇ´Â °ÍÀÌ´Ù. ±×·¯³ª ¹®Á¦°¡ ÀÖ´Ù. ¿À¸¥ÂÊ ±×¸²Ã³·³ ¹Ù·Î ¾Æ·¡ ÁÙ¿¡ ´ëÀÀµÇ´Â ÄÀÌ ¾ø´Â °æ¿ì°¡ ÀÖÀ» ¼ö Àִµ¥ À̶§´Â ¾Æ·¡ ÁÙ ³¡À¸·Î À̵¿ÇØ¾ß ÇÑ´Ù. ¸Þ¸ðÀåÀ̳ª ´Ù¸¥ ÆíÁý±âÀÇ µ¿ÀÛÀ» º¸¸é ÀÌ·± 󸮸¦ ½±°Ô È®ÀÎÇÒ ¼ö ÀÖ´Ù. ´ÙÇàÈ÷ ÀÌ Ã³¸®´Â ÀÌ¹Ì GetOffFromRC¿¡¼ ÇÏ°í ÀÖÀ¸¹Ç·Î »óÇÏÀ̵¿ ÄÚµå´Â ´õ ÀÌ»ó ÀÌ ¹®Á¦¸¦ ½Å°æ¾²Áö ¾Ê¾Æµµ µÈ´Ù.
»óÇÏÀ̵¿ µÑ ´Ù ¹üÀ§ Á¡°ËÀº ²À ÇØ¾ß ÇÑ´Ù. Á¦ÀÏ Ã¹ ÁÙ¿¡¼´Â ´õ ÀÌ»ó ¿Ã¶ó°¥ °÷ÀÌ ¾ø°í Á¦ÀÏ ¾Æ·¡ÁÙ¿¡¼´Â ´õ ³»·Á°¥ °÷ÀÌ ¾ø´Ù. ù ÁÙÀΰ¡´Â GetRCFromOff·Î Çà¿À» Á¶»çÇÑ ÈÄ rÀÌ 0ÀÎÁö º¸¸é µÇ¹Ç·Î °£´ÜÇÏ´Ù. ÇÏÁö¸¸ ¸¶Áö¸· ÁÙÀÎÁö´Â ¾ÆÁ÷ ¾Ë ¼ö ÀÖ´Â ¹æ¹ýÀÌ ¾øÀ¸¹Ç·Î ¹®¼ÀÇ ÁÙ ±æÀ̸¦ Á¶»çÇÏ´Â ÇÔ¼ö GetRowCount ÇÔ¼ö¸¦ ¸¸µéµµ·Ï ÇÏÀÚ.
int GetRowCount()
{
int l,s,e;
for (l=0;;l++) {
GetLine(l,s,e);
if (s==-1)
break;
}
return l;
}
GetLineÀ» ¹Ýº¹ÀûÀ¸·Î È£ÃâÇÏ´Ù°¡ s°¡ -1ÀÌ µÇ´Â ½ÃÁ¡¿¡¼ Å»ÃâÇÏ¸é ¹®¼ÀÇ ÁÙ ¼ö¸¦ ±¸ÇÒ ¼ö ÀÖ´Ù. ÀÌ ÇÔ¼ö·Î Á¶»çÇÏ´Â °ªÀº ¹®¼ÀÇ ÁÙ ¼öÀÌÁö ¸¶Áö¸· ³¡ ÁÙÀÌ ¾Æ´Ï´Ù. ³¡ ÁÙÀº ÁÙ ¼ö¿¡¼ 1À» »©¾ß ÇÑ´Ù. ¿ÀÇÁ¼Â °ª°ú Çà¿°ªÀ» º¯È¯ÇÏ´Â ÇÔ¼ö, ¹®¼ÀÇ ÁÙ ¼ö¸¦ ±¸ÇÏ´Â ÇÔ¼öµéÀ» ÀÌ¹Ì ¸¸µé¾î µÎ¾úÀ¸¹Ç·Î ÀÌÁ¦ »óÇÏÀ̵¿Àº °ÅÀú ¸Ô±â´Ù. ¾Æ·¡, À§·Î À̵¿ÇÏ´Â ÀýÂ÷¸¦ Á¤¸®Çغ¸¾Ò´Ù.
¾Æ·¡ÂÊ À̵¿ |
À§ÂÊ À̵¿ |
¨ç ÇöÀç Çà·Ä°ª ±¸ÇÔ ¨è rÀ» 1Áõ°¡½ÃÅ´. Áï ¾Æ·¡ÁÙ·Î ¨é ´ëÀÀµÇ´Â ¿ÀÇÁ¼ÂÀ» ±¸ÇÔ ¨ê ij·µÀ» »õ À§Ä¡·Î À̵¿½ÃÅ´ ´Ü, ÇöÀç ÁÙÀÌ Á¦ÀÏ ³¡ ÁÙÀÎ °æ¿ì´Â Á¦¿Ü |
¨ç ÇöÀç Çà·Ä°ª ±¸ÇÔ ¨è rÀ» 1°¨¼Ò½ÃŲ. Áï ÀÁÙ·Î ¨é ´ëÀÀµÇ´Â ¿ÀÇÁ¼ÂÀ» ±¸ÇÔ ¨ê ij·µÀ» »õ À§Ä¡·Î ¿Å±è ´Ü, ÇöÀç ÁÙÀÌ Ã¹ ÁÙÀÎ °æ¿ì´Â Á¦¿Ü |
Áö±ØÈ÷ »ó½ÄÀûÀ̹ǷΠ½±°Ô ÀÌÇØµÉ °ÍÀ̸ç ÀÌ ÀýÂ÷¸¦ ±×´ë·Î ÇÔ¼öÀÇ ÄÚµå·Î ¿Å±â±â¸¸ ÇÏ¸é µÈ´Ù. OnKey ÇÔ¼ö¿¡ ´ÙÀ½ Äڵ带 ÀÛ¼ºÇÏÀÚ.
void OnKey(HWND hWnd, UINT vk, BOOL fDown, int cRepeat, UINT flags)
{
int r,c;
if (fDown==FALSE)
return;
switch (vk)
{
....
case VK_UP:
GetRCFromOff(off,r,c);
if (r > 0) {
r--;
off=GetOffFromRC(r,c);
SetCaret();
}
return;
case VK_DOWN:
GetRCFromOff(off,r,c);
if (r < GetRowCount()-1) {
r++;
off=GetOffFromRC(r,c);
SetCaret();
}
return;
±×·±µ¥ ÀÌ·¸°Ô ´Ü¼øÇÑ ¹æ¹ýÀ¸·Î ¾Æ·¡À§·Î À̵¿ÇÏ¸é ´ÙÀ½ ±×¸²Ã³·³ ÇѱÛÀÇ Áß°£¿¡ ij·µÀÌ À§Ä¡ÇÒ ¼öµµ ÀÖ´Ù. ´ÙÀ½ ±×¸²Àº ù ¹ø° ÁÙÀÇ ¡®À»¡¯ÀÚ ´ÙÀ½ À§Ä¡¿¡¼ ¾Æ·¡·Î À̵¿ÇÑ °á°úÀÌ´Ù.
¡®À»¡¯ÀÚ ´ÙÀ½ÀÇ °ø¹é À§Ä¡´Â ¿¹øÈ£°¡ 6¹øÀÌ´Ù. ±×·±µ¥ µÎ ¹ø° ÁÙÀÇ 6¿Àº ¡®°¡¡¯ÀÚÀÇ Áß°£¿¡ °ÉÄ¡°Ô µÈ´Ù. GetOffFromRC°¡ ±ÛÀÚÀÇ °æ°èÀÎÁö´Â º¸Áö ¾Ê°í ´Ü¼øÈ÷ ½ÃÀÛÀ§Ä¡¿¡ ¿¹øÈ£¸¸ ´õÇؼ ¿ÀÇÁ¼ÂÀ» ±¸Çϱ⠶§¹®ÀÌ´Ù. ÀÌ ¹ö±×´Â ÇöÀç ±¸Á¶·Î´Â °íÄ¡±â ¾î·Æ°í ¹Ù·Î ´ÙÀ½ ¹ø ¿¹Á¦¿¡¼ ¼öÁ¤ÇÒ °ÍÀÌ´Ù. ÀÏ´ÜÀº ±×³É ³Ñ¾î°¡µµ·Ï ÇÏÀÚ.
¿©·¯ ÁÙÀ» ÆíÁýÇÒ ¼ö ÀÖ°Ô µÇ¾ú´õ¶óµµ Á¿ìÀ̵¿ ÄÚµå´Â °Çµå¸± ÇÊ¿ä°¡ ¾ø´Ù. ¿Ö³ÄÇϸé IsDBCS ÇÔ¼ö°¡ Enter Äڵ带 ÀνÄÇϵµ·Ï ¼öÁ¤µÇ¾ú°í GetNextOff, GetPrevOff ÇÔ¼ö°¡ °³ÇàÄÚµåÀÇ ±æÀ̸¸Å Àß À̵¿ÇÏ°í Àֱ⠶§¹®ÀÌ´Ù. ÁÙÀÇ Ã³À½°ú ³¡À¸·Î À̵¿ÇÏ´Â Home, EndÀÇ ÄÚµå´Â ¼öÁ¤µÇ¾î¾ß ÇÑ´Ù. ÇÑ ÁÙ¸¸ ÀÖÀ» ¶§´Â ¹«Á¶°Ç ¹öÆÛÀÇ Ã³À½, ¶Ç´Â ¹öÆÛÀÇ ³¡À¸·Î À̵¿ÇÏ¸é µÇÁö¸¸ ¿©·¯ ÁÙÀÏ ¶§´Â ÇöÀç ÁÙÀÇ Ã³À½°ú ³¡À¸·Î À̵¿ÇØ¾ß ÇÑ´Ù.
void OnKey(HWND hWnd, UINT vk, BOOL fDown, int cRepeat, UINT flags)
{
....
case VK_HOME:
GetRCFromOff(off,r,c);
off=GetOffFromRC(r,0);
SetCaret();
return;
case VK_END:
GetRCFromOff(off,r,c);
off=GetOffFromRC(r,1000000);
SetCaret();
return;
HomeÀÇ °æ¿ì ÇöÀç ÁÙ¹øÈ£¸¦ ±¸ÇÑ ÈÄ GetOffFromRC(r,0)À» È£ÃâÇϸé ÁÙÀÇ Ã³À½ À§Ä¡·Î À̵¿ÇÒ °ÍÀÌ´Ù. EndÀÇ °æ¿ì ÁÙ ³¡ÀÇ ¿¹øÈ£¸¦ Á¤È®È÷ Á¶»çÇؼ À̵¿ÇÏ´Â °Íº¸´Ù´Â GetOffFromRC(r,1000000)À¸·Î Á¦ÀÏ µÚÂÊÀ¸·Î À̵¿Çϵµ·Ï ÇÏ¿´´Ù. À̶§ 1000000À̶ó´Â ¿¹øÈ£´Â Ưº°ÇÑ Àǹ̰¡ ÀÖ´Â °ÍÀÌ ¾Æ´Ï¶ó ´Ü¼øÈ÷ ÃæºÐÈ÷ Å« °ªÀ» ÀǹÌÇÑ´Ù. GetOffFromRC´Â ¿¹øÈ£°¡ ÁÙÀÇ ³¡º¸´Ù ´õ Ŭ °æ¿ì ÁÙ ³¡ÀÇ ¿ÀÇÁ¼ÂÀ» ã¾ÆÁֱ⠶§¹®¿¡ ÀÌ·¸°Ô Çصµ ÀüÇô ¹«¸®°¡ ¾ø´Ù.
ÀÌ»óÀ¸·Î ¿©·¯ ÁÙ ÆíÁýÀÌ °¡´ÉÇÑ ApiEdit1 ¿¹Á¦ÀÇ ÀÛ¼ºÀ» ¸¶Ä£´Ù. ¾ÆÁ÷ ÆíÁý±â¶ó°í ÇÒ¸¸ÇÑ ±â´ÉµéÀ» º°·Î °¡Áö°í ÀÖÁö ¾ÊÁö¸¸ ÀÌ ¿¹Á¦´Â ¾ÕÀ¸·Î ¸¸µé ¿¹Á¦µéÀÇ ¿øÇüÀ̹ǷΠÀû¾îµµ ÀÌ ¿¹Á¦ÀÇ ÄÚµå´Â ¿Ïº®ÇÏ°Ô ÀÌÇØÇÏ°í ³Ñ¾î°¡¾ß ´ÙÀ½ ½Ç½ÀÀ» Çϴµ¥ ºÒÆíÇÔÀÌ ¾ø´Ù. Á» ½Ã°£ÀÌ °É¸®´õ¶óµµ ÇÔ¼ö Çϳª Çϳª¸¦ ½º½º·Î ºÐ¼®Çغ¸°í Á¤¸®ÇÑ ÈÄ ³Ñ¾î°¡µµ·Ï ÇÏÀÚ.
ƯÈ÷ ÀÌ ¿¹Á¦¿¡¼ ´«¿©°Ü º¼ °ÍÀº ÆíÁý±â Á¦ÀÛ¿¡ ÇÊ¿äÇÑ À¯Æ¿¸®Æ¼ ÇÔ¼ö ÁýÇÕÀ» Á¤ÀÇÇß´Ù´Â Á¡ÀÌ´Ù. ÀÌ ÇÔ¼öµéÀº ¾ÕÀ¸·Î ±â´ÉÀ» È®ÀåÇÏ´Â ÁÖ¿äÇÑ µµ±¸°¡ µÇ¸ç ¶ÇÇÑ ±× ÀÚü°¡ È®ÀåÀÇ ´ë»óÀ̱⵵ ÇÏ´Ù. ÇÔ¼öÀÇ ÄÚµå ÀÚüµµ Áß¿äÇÏÁö¸¸ ±× º¸´Ù´Â ¿Ö ÀÌ·± ÇÔ¼öµéÀÌ ÇÊ¿äÇÑÁö¸¦ ÀÌÇØÇÏ°í ÇÔ¼öÀÇ ÀԷ°ú Ãâ·ÂÀ» ¾î¶»°Ô ¼³°èÇسõ¾Ò´ÂÁö¸¦ »ìÆ캸´Â °ÍÀÌ ´õ Áß¿äÇÏ´Ù.