¼±ÅÃµÈ µµÇüÀº ÆíÁý ´ë»óÀ¸·Î »ç¿ëµÇ´Âµ¥ °¡Àå °£´ÜÇÑ »èÁ¦ ±â´ÉºÎÅÍ ÀÛ¼ºÇØ º¸ÀÚ. µµÇüÀ» »èÁ¦ÇÏ´Â °ÍÀº ¾ÆÁÖ °£´ÜÇØ¼ ¹è¿¿¡¼ ÀÌ µµÇü¿¡ ´ëÇÑ Á¤º¸¸¦ Áö¿ì±â¸¸ ÇÏ¸é µÈ´Ù. ¹è¿ ¿ä¼Ò°¡ ±¸Á¶Ã¼ Æ÷ÀÎÅÍÀ̹ǷΠÀÌ Æ÷ÀÎÅͰ¡ °¡¸®Å°´Â ±¸Á¶Ã¼¸¦ ¸ÕÀú ÇØÁ¦Çϰí memmove ÇÔ¼ö·Î µÚÂÊ µµÇü Á¤º¸¸¦ ¾ÕÂÊÀ¸·Î ÇÑľ¿ À̵¿½ÃÄÑ ÀÌ Æ÷ÀÎÅ͸¦ Áö¿î´Ù. ±×¸®°í arNumÀ» 1°¨¼Ò½ÃÄÑ Àüü µµÇü °³¼öµµ Çϳª °¨¼Ò½ÃŲ´Ù. ÀÌ µ¿ÀÛÀ» ÇÏ´Â ÇÔ¼ö¸¦ ÀÛ¼ºÇÑ´Ù.
void DelObject(int idx)
{
free(arObj[idx]);
memmove(arObj+idx,arObj+idx+1,(arNum-idx-1)*sizeof(DObject *));
arNum--;
}
WM_COMMAND¿¡¼ »èÁ¦ ¸í·ÉÀ» ³»¸± ¶§ ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ¼±ÅÃµÈ µµÇüÀ» »èÁ¦ÇÑ´Ù. ¹°·Ð ¼±ÅÃµÈ µµÇüÀÌ ÀÖÀ» ¶§¸¸ »èÁ¦ÇØ¾ß ÇÏ¸ç µµÇüÀÌ »èÁ¦µÈ ÈÄ ¼±ÅÃÀ» ÇØÁ¦ÇÑ´Ù. ¹è¿¿¡¼ µµÇüÀ» »èÁ¦ÇÑ ÈÄ ÀÛ¾÷ ¿µ¿ªÀ» ¹«È¿È½Ã۱⸸ Çϸé OnPaint°¡ ¹æ±Ý Áö¿öÁø µµÇü¸¸ »©°í ¸ðµç µµÇüÀ» ´Ù½Ã ±×¸®¹Ç·Î ȸ鿡¼µµ µµÇüÀÌ »ç¶óÁú °ÍÀÌ´Ù.
LRESULT OnCommand(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
switch(LOWORD(wParam)) {
case IDM_POPUP_DELETE:
if (NowSel != -1) {
DelObject(NowSel);
NowSel=-1;
InvalidateRect(hWnd,NULL,TRUE);
}
break;
}
return 0;
}
ĵ¹ö½º´Â ¸ÞÀÎ ¸Þ´º´Â °¡ÁöÁö ¾ÊÀ¸¸ç ´ë½Å ÆË¾÷ ¸Þ´º¸¦ °¡Áö°í ÀÖ´Ù. ¾ÆÁ÷ ÆË¾÷ ¸Þ´º´Â ºÙÀÌÁö ¾Ê¾Ò´Âµ¥ IDM_POPUP_DELETE¶ó´Â ID´Â ÆË¾÷ ¸Þ´ºÀÇ »èÁ¦ Ç׸ñÀÌ´Ù. ÀÌ ¸í·É ¿Ü¿¡ ¸ÞÀÎ ¸Þ´º¿¡µµ »èÁ¦ ¸í·ÉÀÌ ÀÖÀ¸¹Ç·Î ¿©±â¼µµ ¶È°°Àº µ¿ÀÛÀ» ÇØ¾ß ÇÑ´Ù. µÎ ¸Þ´º°¡ °°Àº ¸í·ÉÀ» ó¸®ÇÒ ¶§´Â ÇÑÂÊ ¸Þ´º¿¡¸¸ Äڵ带 ÀÛ¼ºÇÏ°í ´Ù¸¥ÂÊ¿¡¼´Â ÀÌ ¸Þ½ÃÁö¸¦ º¸³»µµ·Ï ÇÏ´Â °ÍÀÌ ÁÁ´Ù.
LRESULT Main_OnCommand(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
switch(LOWORD(wParam)) {
case IDM_FILE_EXIT:
DestroyWindow(hWnd);
break;
case IDM_EDIT_DELETE:
SendMessage(hCanvas,WM_COMMAND,MAKEWPARAM(IDM_POPUP_DELETE,0),0);
break;
¸ÞÀÎ À©µµ¿ì´Â ĵ¹ö½º¿¡°Ô WM_COMMAND¸¦ º¸³» ÆË¾÷ ¸Þ´ºÀÇ »èÁ¦ ó¸® Äڵ带 È£ÃâÇÑ´Ù. ¸ÞÀÎ ¸Þ´ºÀÇ »èÁ¦ ¸í·ÉÀº »ç¿ëÀÚ¿Í Äµ¹ö½º¸¦ À̾îÁÖ´Â Áß°è ¿ªÇÒ¸¸ Çϰí Àִµ¥ ²À ÀÌ·¸°Ô »èÁ¦ ¸í·ÉÀ» ¾çÂÊ¿¡ µÎ¾î¾ß ÇÏ´Â ÀÌÀ¯´Â Â÷Àϵå´Â ºÎ¸ðÀÇ ±â´É¿¡ »ó°ü¾ø´Â µ¶¸³¼ºÀ» °¡Á®¾ß Çϱ⠶§¹®ÀÌ´Ù. ¶ÇÇÑ Â÷Àϵ尡 ¾×¼¿·¯·¹ÀÌÅ͸¦ Á÷Á¢ ó¸®ÇÒ ¼ö ¾ø±â ¶§¹®¿¡ ºÎ¸ð°¡ ¾×¼¿·¯·¹ÀÌÅÍ ÀÔ·ÂÀ» ´ë½Å ¹Þ¾Æ ÁÖ¾î¾ß ÇÑ´Ù.