Ŭ¸³º¸µå °ü·Ã ¸í·ÉÀº ÅؽºÆ® ÆíÁýÁß¿¡ ¾ÆÁÖ ÀÚÁÖ »ç¿ëµÇ´Â ±â´ÉÀε¥ ÀÏÀÏÀÌ Æ˾÷¸Þ´º¸¦ ¼±ÅÃÇÏ´Â °ÍÀº ¹«Ã´ ¹ø°Å·Î¿î ÀÏÀÌ´Ù. ±×·¡¼ ÆíÁýÁß¿¡ °ð¹Ù·Î Ŭ¸³º¸µå ¾×¼ÇÀ» ÇÒ ¼ö ÀÖµµ·Ï ´ÜÃàÅ°¸¦ Á¦°øÇϴµ¥ Ŭ¸³º¸µå °ü·Ã ¸í·ÉÀÇ ´ÜÃàÅ°´Â Åë»ó <Ctrl+C>(º¹»ç), <Ctrl+X>(À߶󳻱â), <Ctrl+V>(ºÙ¿©³Ö±â), <Ctrl+A>(¸ðµÎ ¼±ÅÃ)·Î Á¤ÀÇÇÑ´Ù. ¸ðµç ÆíÁý±âµéÀÌ ÀÌ ´ÜÃàÅ°¸¦ Ŭ¸³º¸µå¿ëÀ¸·Î Á¤ÀÇÇÏ°í ÀÖÀ¸¸ç ¶ÇÇÑ »ç¿ëÀڵ鵵 ÀÌ ´ÜÃàÅ°¿¡ Àͼ÷ÇϹǷΠ±×´ë·Î Àû¿ëÇϵµ·Ï ÇÏÀÚ.
´ÜÃàÅ°¶ó¸é ¾×¼¿·¯·¹ÀÌÅ͸¦ ¸¸µé¾î µÎ¸é Æí¸®ÇÏ°ÚÁö¸¸ ApiEdit´Â ÄÁÆ®·ÑÀ̱⠶§¹®¿¡ Á÷Á¢ ¾×¼¿·¯·¹ÀÌÅ͸¦ ¾²±â°¡ ¾î·Æ´Ù. ±×·¡¼ OnChar¿¡¼ ´ÜÃàÅ°¸¦ ÀԷ¹޾ÒÀ» ¶§ ÇØ´ç ¸í·ÉÀ» ¼öÇàÇϵµ·Ï ÇÏ¿´´Ù.
void OnChar(HWND hWnd, TCHAR ch, int cRepeat)
{
TCHAR szChar[3];
int i;
if (ch == 1) {
SendMessage(hWnd,WM_COMMAND,MAKEWPARAM(IDM_AE_SELALL,0),0);
return;
}
if (ch == 3) {
SendMessage(hWnd,WM_COMMAND,MAKEWPARAM(IDM_AE_COPY,0),0);
return;
}
if (ch == 22) {
SendMessage(hWnd,WM_COMMAND,MAKEWPARAM(IDM_AE_PASTE,0),0);
return;
}
if (ch == 24) {
SendMessage(hWnd,WM_COMMAND,MAKEWPARAM(IDM_AE_CUT,0),0);
return;
}
if ((ch < ¡® ¡® && ch != ¡®\r¡¯ && ch != ¡®\t¡¯) || ch==127)
return;
<Ctrl+C>ÀÇ ¹®ÀÚÄڵ尡 3¹øÀ̹ǷΠÀÌ Äڵ尡 ÀԷµǾúÀ» ¶§ IDM_AE_COPY ¸Þ½ÃÁö¸¦ º¸³»¸é µÈ´Ù. ÇöÀç ÀԷ¸ðµå°¡ ÇѱÛÀÌ´õ¶óµµ <Ctrl+C>´Â Ç×»ó 3¹ø ¹®ÀÚ¸¦ º¸³»¹Ç·Î ÀÌ ÄÚµå´Â ¾×¼¿·¯·¹ÀÌÅÍ ´ë½Å »ç¿ëÇصµ ÀüÇô ¹«¸®°¡ ¾ø´Ù.
Ŭ¸³º¸µå °ü·Ã ´ÜÃàÅ°´Â ÀÌ¿Ü¿¡ <Ctrl+Ins>, <Shift+Ins>, <Ctrl+Del>Å°°¡ ÀÖÀ¸¸ç ÀÌ Å°µµ ÀϹÝÀûÀ¸·Î ¸¹ÀÌ »ç¿ëµÈ´Ù. ÀÌ Å°¿¡ ´ëÇؼµµ ´ÜÃàÅ°¸¦ Á¤ÀÇÇϵµ·Ï ÇÏÀÚ. VK_DELETE, VK_BACKÀº ¼öÁ¤ÇÏ°í VK_INSERT´Â »õ·Î Ãß°¡ÇÏ¿´´Ù.
case VK_DELETE:
if (bShift) {
SendMessage(hWnd,WM_COMMAND,MAKEWPARAM(IDM_AE_CUT,0),0);
return;
}
if (DeleteSelection()==FALSE) {
if (IsDBCS(off)) {
Delete(off, 2);
} else {
Delete(off, 1);
}
}
InvalidateRect(hWnd,NULL,TRUE);
SetCaret();
return;
case VK_BACK:
if ((off==0 && SelStart==SelEnd) || (bShift && bControl))
return;
if (DeleteSelection()==FALSE) {
if (bControl) {
OldOff=off;
off=GetPrevWord(OldOff);
Delete(off,OldOff-off);
} else {
off=GetPrevOff(off);
if (IsDBCS(off)) {
Delete(off, 2);
} else {
Delete(off, 1);
}
}
}
InvalidateRect(hWnd,NULL,TRUE);
SetCaret();
return;
case VK_INSERT:
if (bShift) {
SendMessage(hWnd,WM_COMMAND,MAKEWPARAM(IDM_AE_PASTE,0),0);
} else if (bControl) {
SendMessage(hWnd,WM_COMMAND,MAKEWPARAM(IDM_AE_COPY,0),0);
}
return;
<Shift>Å°¿Í <Del>Å°¸¦ °°ÀÌ ´©¸£¸é ¹®ÀÚ¸¦ Áö¿ì´Â ´ë½Å IDM_AE_CUT ¸Þ½ÃÁö¸¦ º¸³» À߶󳻱⸦ Çϵµ·Ï ÇÏ¿´´Ù. VK_DELETE°¡ ÀÌ·± ½ÄÀ¸·Î ±â´ÉÀÌ ¼öÁ¤µÊÀ¸·Î Çؼ ÀÌ Å°ÀÇ ±â´ÉÀ» ºô·Á¾²°í ÀÖ´Â VK_BACKÀÇ Äڵ尡 ºÒ°¡ÇÇÇÏ°Ô ¿µÇâÀ» ¹Þ°Ô µÇ´Âµ¥ ÀÌ »óÅ¿¡¼ <Shift+BS>¸¦ ´©¸£¸é À̰͵µ À߶󳻱Ⱑ µÇ¾î ¹ö¸± °ÍÀÌ´Ù. ¾î·µç »èÁ¦´Â µÇ°ÚÁö¸¸ Ŭ¸³º¸µå¿¡ µé¾î ÀÖ´Â ³»¿ëÀÌ Æı«µÈ´Ù´Â ¹®Á¦Á¡ÀÌ ÀÖ´Ù.
±×·¡¼ <BS>´Â ´õ ÀÌ»ó VK_DELETEÀÇ Äڵ带 ºô·Á ¾²Áö ¸øÇÏ°Ô µÇ¾ú°í ÀڽŸ¸ÀÇ »èÁ¦ Äڵ带 °¡Áö°Ô µÇ¾ú´Ù. ¼±Åÿµ¿ªÀÌ ÀÖ´Â »óÅ¿¡¼´Â ¼±Åÿµ¿ª¸¸ »èÁ¦Çϸç <Ctrl+BS>´Â ¾Õ ´Ü¾îÀÇ ¼±µÎ±îÁö »èÁ¦ÇÑ´Ù. <Shift>Å°°¡ ´·¯Á³´ÂÁö´Â Ưº°È÷ Á¡°ËÇÏÁö ¾Ê¾ÒÀ¸¹Ç·Î <Shift+BS>´Â <BS>¿Í µ¿ÀÏÇϸç <Ctrl+Shift+BS>´Â ¾Æ¹« µ¿ÀÛµµ ÇÏÁö ¾Êµµ·Ï ÇÏ¿´´Ù. ÇöÀç À§Ä¡°¡ ¹®¼ÀÇ ¼±µÎÀÌ¸é ¾ÕÂÊÀ¸·Î »èÁ¦ÇÒ ¼ö ¾øÀ¸¹Ç·Î ±×³É ¸®ÅÏÇ쵂 ´Ü ¼±Åÿµ¿ªÀÌ ÀÖÀ¸¸é »èÁ¦ÇÒ ¼ö ÀÖµµ·Ï ÇÏ¿´´Ù.
VK_INSERTÅ°´Â °íÀ¯ÀÇ ±â´ÉÀº ¾ø°í ´ÜÃàÅ°¸¸ Á¦°øÇÑ´Ù. <Ctrl+Ins>´Â º¹»ç ¸í·É°ú µ¿ÀÏÇϸç <Shift+Ins>´Â ºÙ¿©³Ö±â ¸í·É°ú µ¿ÀÏÇÏ´Ù. ´·¯Áø Á¶ÇÕÅ°¿¡ µû¶ó ¸Þ½ÃÁö¸¸ ¹Ù²ã¼ ´Ù½Ã º¸³»¸é µÈ´Ù. ÀÌ ´ÜÃàÅ°µµ ÀϹÝÀûÀ¸·Î ¸¹ÀÌ »ç¿ëµÇ¹Ç·Î °°ÀÌ Áö¿øÇÏ´Â °ÍÀÌ ÁÁ´Ù.
ÀÌ»ó ¿©±â±îÁö ¸¶¿ì½º¿Í Å°º¸µå·Î ¼±Åÿµ¿ªÀ» ¸¸µå´Â ½Ç½ÀÀ» Çߴµ¥ ¿¹¹®À» ª°Ô ³Ö¾úÀ½¿¡µµ ºÒ±¸ÇÏ°í ³Ê¹« ´À·Á¼ Å×½ºÆ®Çغ¸±â°¡ ¹«Ã´ ¾î·Á¿üÀ» °ÍÀÌ´Ù. ´ÙÀ½ Àå¿¡¼´Â ±â´É Ãß°¡¾øÀÌ ¼Óµµ¸¦ °³¼±Çغ¸°í ÇÁ·ÎÁ§Æ®ÀÇ Àüü Äڵ带 ÇÑ ¹ø Á¤¸®Çغ¸µµ·Ï ÇÏÀÚ.