´Ù.Æ˾÷ ¸Þ´º

ĵ¹ö½º À©µµ¿ì¿¡µµ Æ˾÷ ¸Þ´º¸¦ ´Þ¾Æ º¸ÀÚ. ¸ÞÀÎ ¸Þ´º¿¡µµ ÆíÁý ¸í·ÉÀÌ ÀÖ±â´Â ÇÏÁö¸¸ Æ˾÷Àº ¸¶¿ì½ºÀÇ À̵¿ °Å¸®°¡ ª°í ÆíÁý ´ë»ó¿¡ ´ëÇØ Á÷Á¢ »ç¿ëÇÒ ¼ö ÀÖ¾î Æí¸®ÇÏ¸ç ¶ÇÇÑ Äµ¹ö½ºÀÇ µ¶¸³¼ºÀ» ³ô¿© Áֱ⵵ ÇÑ´Ù. ¸®¼Ò½º¿¡ ¸Þ´º´Â ÀÌ¹Ì ÀÛ¼ºµÇ¾î ÀÖÀ¸¹Ç·Î ¸Þ´º¸¦ Ãâ·ÂÇÏ´Â Äڵ常 ÀÛ¼ºÇÏ¸é µÈ´Ù.

 

LRESULT OnContextMenu(HWND hWnd,WPARAM wParam,LPARAM lParam)

{

   HMENU hMenu, hPopup;

   int TempSel;

   POINT pt;

 

   pt.x=LOWORD(lParam);

   pt.y=HIWORD(lParam);

   ScreenToClient(hWnd,&pt);

   TempSel=FindObject(pt.x,pt.y);

   if (NowSel != TempSel) {

      NowSel=TempSel;

      InvalidateRect(hWnd,NULL,TRUE);

      UpdateWindow(hWnd);

   }

  

   hMenu=LoadMenu(g_hInst, MAKEINTRESOURCE(IDR_POPUP));

   hPopup=GetSubMenu(hMenu, 0);

   if (NowSel == -1) {

      EnableMenuItem(hPopup, IDM_POPUP_DELETE, MF_BYCOMMAND | MF_GRAYED);

      EnableMenuItem(hPopup, IDM_POPUP_PROPERTY, MF_BYCOMMAND | MF_GRAYED);

   }

 

   TrackPopupMenu(hPopup, TPM_LEFTALIGN, LOWORD(lParam), HIWORD(lParam),

      0, hWnd, NULL);

   DestroyMenu(hMenu);

   return 0;

}

 

IDR_POPUPÀÇ Ã¹ ¹ø° Æ˾÷ ¸Þ´º¸¦ Àоî¿Í TrackPopupMenu ÇÔ¼ö·Î Ãâ·ÂÇß´Ù. ¸Þ´º¸¦ Ç¥½ÃÇϱâ Àü¿¡ Ŭ¸¯ÇÑ °÷ÀÇ µµÇüÀ» °ð¹Ù·Î ÆíÁýÇÒ ¼ö ÀÖµµ·Ï ¼±ÅÃÇÏ°í ¼±Åà »óÅ¿¡ µû¶ó »èÁ¦, ¼Ó¼º Ç׸ñÀÇ »óŸ¦ º¯°æÇÑ´Ù. ¼±ÅÃµÈ µµÇüÀÌ ¾øÀ¸¸é »èÁ¦, ¼Ó¼º ¸í·Éµµ »ç¿ëÇÒ ¼ö ¾ø´Ù. Æ˾÷ ¸Þ´º Ç׸ñÀÇ ¸í·É 󸮴 ÀÌ¹Ì WM_COMMAND¿¡ ÀÛ¼ºÇØ µÎ¾ú´Ù.