¿øÇü |
BOOL TrackPopupMenuEx(HMENU hmenu, UINT fuFlags, int x, int y, HWND hwnd, LPTPMPARAMS lptpm); |
MFC ¿øÇü |
ÇØ´çÇÏ´Â ÇÔ¼ö ¾øÀ½ |
Àμö |
¢ºhmenu : Ãâ·ÂÇÒ Æ˾÷ ¸Þ´ºÀÇ ÇÚµé. º¸Åë GetSubMenu ÇÔ¼ö·Î ±¸ÇÑ´Ù. ¢ºfuFlags : Æ˾÷ ¸Þ´º¸¦ Ãâ·ÂÇÒ ¿É¼Ç. À§Ä¡¿Í ¸Þ´º Ç׸ñ ¼±Åÿ¡ °üÇÑ ¿©·¯ °¡Áö ¿É¼ÇÀÌ ÀÖ´Ù. ¢º(x,y) : Æ˾÷ ¸Þ´º¸¦ Ãâ·ÂÇÒ È¸é ÁÂÇ¥ ¢ºhWnd : Æ˾÷ ¸Þ´ºÀÇ ºÎ¸ð À©µµ¿ì ÇÚµéÀ̸ç Æ˾÷ ¸Þ´º°¡ ¼±ÅõǾúÀ» ¶§ ÀÌ À©µµ¿ì·Î WM_COMMAND ¸Þ½ÃÁö°¡ Àü´ÞµÈ´Ù. ¢ºlptpm : Æ˾÷ ¸Þ´º°¡ Ãâ·ÂµÇÁö ¸»¾Æ¾ß ÇÒ ¿µ¿ªÀ» ÁöÁ¤ÇÑ´Ù. ÇÊ¿ä¾øÀ» °æ¿ì NULL·Î ÁÙ ¼ö ÀÖ´Ù. |
¸®ÅÏ |
¼º°øÇϸé 0ÀÌ ¾Æ´Ñ°ªÀ» ¸®ÅÏÇÏ¸ç ½ÇÆнà 0À» ¸®ÅÏÇÑ´Ù. uFlags¿¡ TPM_RETURNCMD Ç÷¡±×¸¦ ÁÖ¾úÀ» °æ¿ì ¸®ÅÏ°ªÀº ¼±ÅÃÇÑ ¸Þ´º Ç׸ñÀÇ ID°¡ µÇ¸ç Ç׸ñ ¼±ÅÃÀ» Ãë¼ÒÇϸé 0ÀÌ ¸®ÅϵȴÙ. |
¼³¸í |
TrackPopupMenu¿Í ¸¶Âù°¡Áö·Î Æ˾÷ ¸Þ´º¸¦ ȸéÀ¸·Î Ãâ·ÂÇÑ´Ù. ÀÌ ÇÔ¼öÀÇ µ¿ÀÛ°ú Ç÷¡±×¿¡ ´ëÇÑ ±âº»ÀûÀÎ »çÇ×Àº TrackPopupMenu¸¦ ¸ÕÀú Âü°íÇϱ⠹ٶó¸ç Ãß°¡ÀûÀÎ ±â´É¸¸À» ¼³¸íÇÑ´Ù. ÀÌ ÇÔ¼öÀÇ ¸¶Áö¸· Àμö lptpmÀº ´ÙÀ½°ú °°ÀÌ Á¤ÀÇµÈ ±¸Á¶Ã¼À̸ç Æ˾÷ ¸Þ´º¿¡ ÀÇÇØ °¡·ÁÁöÁö ¸»¾Æ¾ß ÇÒ ¿µ¿ªÀ» ÁöÁ¤ÇÑ´Ù. typedef struct tagTPMPARAMS { cbSize´Â ÀÌ ±¸Á¶Ã¼ÀÇ Å©±â°ªÀ» °¡Áö¸ç rcExclude´Â Æ˾÷ ¸Þ´º Ãâ·Â¿¡ Á¦¿ÜµÇ¾î¾ß ÇÒ »ç°¢ ¿µ¿ªÀ» ÁöÁ¤Çϴµ¥ ÀÌ ÁÂÇ¥´Â ȸé ÁÂÇ¥ÀÌ´Ù. ¸¸¾à Æ˾÷ ¸Þ´º°¡ ¿·Á ÀÖ´Â µ¿¾È¿¡ ¾Æ·¡ÂÊ È¸éÀ» °è¼Ó ÂüÁ¶ÇØ¾ß ÇÑ´Ù¸é ÀÌ ±¸Á¶Ã¼·Î Æ˾÷ ¸Þ´º Ãâ·Â ±ÝÁö ¿µ¿ªÀ» ÁöÁ¤ÇÒ ¼ö ÀÖÀ¸¸ç ÀÌ °æ¿ì (x,y)°¡ ±ÝÁö ¿µ¿ª¿¡ ÀÖ´õ¶óµµ ÀÌ ¿µ¿ª ¹Ù±ùÀ¸·Î Æ˾÷ ¸Þ´º¸¦ À̵¿½ÃÄÑ ÁØ´Ù. ´ÙÀ½ ¿¹Á¦´Â ȸé»óÀÇ (100,100)-(400,150) ¿µ¿ª¿¡ Æ˾÷ ¸Þ´º°¡ Ãâ·ÂµÇÁö ¾Êµµ·Ï ÇÑ´Ù. LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; HMENU hMenu, hPopup; TPMPARAMS tp; RECT ert={100,100,400,150}; char Mes[]="ÀÌ ¿µ¿ª¿¡´Â ¸Þ´º Ãâ·ÂÀÌ ±ÝÁöµÊ"; switch(iMessage) { case WM_CONTEXTMENU: hMenu=LoadMenu(g_hInst, MAKEINTRESOURCE(IDR_MENU1)); hPopup=GetSubMenu(hMenu, 0); tp.cbSize=sizeof(TPMPARAMS); tp.rcExclude=ert; ClientToScreen(hWnd,(LPPOINT)&tp.rcExclude); ClientToScreen(hWnd,(LPPOINT)&tp.rcExclude+1); TrackPopupMenuEx(hPopup, TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_VERTICAL, LOWORD(lParam), HIWORD(lParam), hWnd, &tp); DestroyMenu(hMenu); return 0; case WM_COMMAND: switch(LOWORD(wParam)) { case IDM_POPUP1: MessageBox(hWnd,"ù ¹ø° Æ˾÷ ¸Þ´º¸¦ ¼±ÅÃÇß½À´Ï´Ù","¾Ë¸²",MB_OK); break; case IDM_POPUP2: MessageBox(hWnd,"µÎ ¹ø° Æ˾÷ ¸Þ´º¸¦ ¼±ÅÃÇß½À´Ï´Ù","¾Ë¸²",MB_OK); break; case IDM_POPUP3: MessageBox(hWnd,"¼¼ ¹ø° Æ˾÷ ¸Þ´º¸¦ ¼±ÅÃÇß½À´Ï´Ù","¾Ë¸²",MB_OK); break; } return 0; case WM_PAINT: hdc=BeginPaint(hWnd, &ps); Rectangle(hdc,ert.left,ert.top,ert.right,ert.bottom); TextOut(hdc,ert.left+10,ert.top+10,Mes,lstrlen(Mes)); EndPaint(hWnd, &ps); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return(DefWindowProc(hWnd,iMessage,wParam,lParam)); } ÀÛ¾÷ ¿µ¿ª ÁÂÇ¥¸¦ ȸé ÁÂÇ¥·Î º¯°æÇÑ ÈÄ rcExclude¿¡ ¼³Á¤ÇÏ¿´À¸¹Ç·Î ÀÌ ¿µ¿ªÀº Æ˾÷ ¸Þ´º¿¡ ÀÇÇØ °¡·ÁÁöÁö ¾Ê´Â´Ù. ´ÙÀ½Àº ȸéÀÇ °¢ ºÎºÐ¿¡¼ Æ˾÷ ¸Þ´º¸¦ ¿¾úÀ» ¶§ÀÇ ¸ð¾çÀÌ´Ù. Æ˾÷ ¸Þ´º°¡ Ãâ·Â ±ÝÁö ¿µ¿ª¿¡ ¿·Á¾ß ÇÒ °æ¿ì ¼öÁ÷ À§Ä¡¸¦ Á¶Á¤ÇÔÀ¸·Î½á ÀÌ ¿µ¿ª ¹Ù±ù¿¡ ¸Þ´º¸¦ ¿¾î ÁÜÀ¸·Î½á Æ˾÷ ¸Þ´º°¡ ¿¸° µ¿¾È¿¡µµ ±ÝÁö ¿µ¿ªÀ» º¼ ¼ö ÀÖ´Ù. ÀÌ ÇÔ¼ö´Â TrackPopuMenu¿¡ ºñÇØ µÎ °³ÀÇ Ç÷¡±×¸¦ Ãß°¡·Î ÁöÁ¤ÇÒ ¼ö Àִµ¥ ÀÌ Ç÷¡±×µéÀº Æ˾÷ ¸Þ´º°¡ Ãâ·Â ±ÝÁö ¿µ¿ª¿¡ °ãÄ¥ °æ¿ì ¾î¶²½ÄÀ¸·Î Æ˾÷ ¸Þ´º¸¦ À̵¿½Ãų °ÍÀΰ¡¸¦ ÁöÁ¤ÇÑ´Ù. TPM_HORIZONTALÀº Æ˾÷ ¸Þ´ºÀÇ ¼öÆò À§Ä¡¸¦ º¯°æÇϸç TPM_VERTICALÀº ¼öÁ÷ À§Ä¡¸¦ º¯°æÇÑ´Ù. ¿¹Á¦´Â ¼öÁ÷ À§Ä¡¸¦ º¯°æÇϵµ·Ï ÀÛ¼ºµÇ¾î Àִµ¥ ¼öÆò À§Ä¡¸¦ º¯°æÇϵµ·Ï ¼öÁ¤ÇÏ¸é ´ÙÀ½°ú °°ÀÌ Æ˾÷ ¸Þ´º°¡ ¿¸°´Ù. |
Âü°íÇÔ¼ö |
TrackPopupMenu : Ãâ·Â ±ÝÁö ¿µ¿ªÀ» ÁöÁ¤ÇÒ ¼ö ¾ø´Â °Í ¿Ü¿¡´Â ÀÌ ÇÔ¼ö¿Í µ¿ÀÏÇÏ´Ù. |
Ç÷§Æû | 95ÀÌ»ó |
ÂüÁ¶ |
Æ˾÷ ¸Þ´º¿¡ ´ëÇÑ ÀϹÝÀûÀÎ »ç¿ë¿¹´Â 19-2¿¡ ÀÖ´Ù. |
written by http://www.winapi.co.kr
|