»ç¿ëÀÚ°¡ Æ˾÷¸Þ´º¸¦ ¼±ÅÃÇϸé WM_COMMAND ¸Þ½ÃÁö°¡ Àü´ÞµÇ°í À̶§ LOWORD(wParam)À» º¸¸é ¾î¶² ¸Þ´ºÇ׸ñÀ» ¼±ÅÃÇß´ÂÁö ¾Ë ¼ö ÀÖ´Ù. °¢ Æ˾÷¸Þ´º¿¡ ´ëÇÑ Çڵ鷯¸¦ OnCommand¿¡ ÀÛ¼ºÇÏ¿´´Ù.
void OnCommand(HWND hWnd, int id, HWND hwndCtl, UINT codeNotify)
{
HGLOBAL hmem;
TCHAR *ptr;
int SelFirst, SelSecond;
switch (id) {
case IDM_AE_CUT:
if (SelStart != SelEnd) {
SendMessage(hWnd,WM_COMMAND,MAKEWPARAM(IDM_AE_COPY,0),0);
DeleteSelection();
InvalidateRect(hWnd,NULL,TRUE);
SetCaret();
}
return;
case IDM_AE_COPY:
if (SelStart != SelEnd) {
SelFirst=min(SelStart,SelEnd);
SelSecond=max(SelStart,SelEnd);
hmem=GlobalAlloc(GHND, SelSecond-SelFirst+1);
ptr=(TCHAR *)GlobalLock(hmem);
memcpy(ptr,buf+SelFirst,SelSecond-SelFirst);
GlobalUnlock(hmem);
if (OpenClipboard(hWnd)) {
EmptyClipboard();
SetClipboardData(CF_TEXT,hmem);
CloseClipboard();
}
}
return;
case IDM_AE_PASTE:
if (IsClipboardFormatAvailable(CF_TEXT)) {
DeleteSelection();
OpenClipboard(hWnd);
hmem=GetClipboardData(CF_TEXT);
ptr=(TCHAR *)GlobalLock(hmem);
Insert(off,ptr);
GlobalUnlock(hmem);
CloseClipboard();
InvalidateRect(hWnd,NULL,TRUE);
off += lstrlen(ptr);
SetCaret();
}
return;
case IDM_AE_SELALL:
SelStart=0;
SelEnd=lstrlen(buf);
off=SelEnd;
InvalidateRect(hWnd,NULL,TRUE);
SetCaret();
return;
}
}
¼±Åÿµ¿ªÀ» º¹»çÇÒ ¶§´Â ¼±Åÿµ¿ª ±æÀ̸¸Å ¸Þ¸ð¸®¸¦ ÇÒ´çÇØ º¹»çÇÑ ÈÄ Å¬¸³º¸µå¿¡ ³Ñ°ÜÁÖ¸é µÈ´Ù. À̶§ ¼±Åÿµ¿ªÀº ¹Ýµå½Ã Á¤±ÔÈÇÏ¿© ±æÀÌ¿Í ½ÃÀÛÀ§Ä¡¸¦ Á¦´ë·Î °è»êÇØ¾ß ÇÑ´Ù. À߶󳻱â´Â º¹»ç¿Í DeleteSelectionÀ» ÀÌ¾î¼ È£ÃâÇÏ¸é °£´ÜÇÏ°Ô ±¸ÇöÇÒ ¼ö ÀÖ´Ù. ¼±ÅÃÇÑ ¹®ÀÚ¿ÀÌ »èÁ¦µÇ¹Ç·Î ȸéÀ» ´Ù½Ã ±×¸®°í ij·µµµ ¿Å°Ü¾ß ÇÑ´Ù.
ºÙ¿©³Ö±â´Â Ŭ¸³º¸µå·ÎºÎÅÍ CF_TEXTÇü µ¥ÀÌÅ͸¦ ÀÐ¾î ¹®¼¿¡ InsertÇÏ¸é µÇ´Âµ¥ ºÙ¿©³Ö±â Àü¿¡ ¼±Åÿµ¿ªÀÌ ÀÖ¾ú´Ù¸é ¸ÕÀú ¼±Åÿµ¿ªÀ» Á¦°ÅÇØ¾ß ÇÑ´Ù. ºÙ¿©³ÖÀº ÈÄ Ä³·µÀº »õ·Î »ðÀÔµÈ ¹®ÀÚ¿ÀÇ ³¡À¸·Î º¸³» ÁÖ¾ú´Ù. Àüü ¼±ÅÃÀº Á¤¸» °£´ÜÇÏ´Ù. SelStart´Â ¹®¼ÀÇ Ã³À½À¸·Î SelEnd´Â ¹®¼ÀÇ ³¡À¸·Î ÁöÁ¤ÇÏ¿© ¹®¼ Àüü¸¦ ¼±ÅÃÇÏ°í ij·µÀº ¹®¼ÀÇ ³¡À¸·Î º¸³» ÁÖ¾ú´Ù.
¿©±â±îÁö ÀÛ¾÷ÇÑ ÈÄ ½ÇÇàÇغ¸ÀÚ. ¼±ÅÃÇÑ ¹®ÀåÀ» º¹»ç, »èÁ¦, À߶󳻱â ÇÒ ¼ö ÀÖ°í Ŭ¸³º¸µåÀÇ ÅؽºÆ®¸¦ °¡Á®¿Ã ¼öµµ ÀÖ´Ù. ±×·¡¼ ÀÌÁ¦ºÎÅÍ´Â Å×½ºÆ®¸¦ À§ÇØ ¸Å¹ø ¡®µ¿Çع°°ú ¹éµÎ»êÀÌ~¡¯¸¦ ŸÀÌÇÁÇÒ ÇÊ¿ä¾øÀÌ ¸î °³ÀÇ ÅؽºÆ® ¹®¼¸¦ ¸¸µé¾î ³õ°í ºÙ¿©³ÖÀ¸¸é µÉ °ÍÀÌ´Ù.