이미지 형태의 버튼을 만들고 클릭했을때 메뉴가 뜨도록 했다.
void CCMMenu::PopupMenu(CRect btnRect, UINT nID)
{
CWnd *pWnd = AfxGetMainWnd();
HWND hWnd = pWnd->m_hWnd;
UINT nLoop = 0;
UINT nCmdNum = 0; //선택된 대상의 고유 ID 부여를 위해 필요
CRect rect;
GetWindowRect(hWnd, rect);
UINT uposTop = rect.top + btnRect.bottom + CGlobal::Instance()->GetBitmapSize(IDX_BMP_CAPTION_LEFT).cy -1;
UINT uposLeft = rect.left + btnRect.left + CGlobal::Instance()->GetBitmapSize(IDX_BMP_CAPTION_LEFT).cx -1;
CMenu menu;
menu.CreatePopupMenu();
for(nLoop = 0; nLoop < pMenuArray[nID].nCmdType; nLoop++)
{
nCmdNum = ((nID*10) + nLoop + 11) + 20000;
menu.AppendMenu(MF_STRING, nCmdNum, L"Menu");
}
/*! selected not return 0 */
int menuId = menu.TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_RETURNCMD, uposLeft, uposTop, pWnd);
menu.DestroyMenu();
}
TrackPopupMenu 같은 경우는 메뉴를 띄워주는 것이기 때문에 팝업메뉴의 아이템을 선택하지 않으면 PopupMenu를 호출한 곳으로 돌아가지 않는 현상이 생긴다.
위 처럼 코드를 작성할 경우 AppendMenu 에서 부여해준 번호를 return 해준다.
크게 문제가 발생할 것 같지 않지만 문제는 크다.!!
PopupMenu를 호출하는 함수안에서 다음 으로 진행이 되지 않는 것이다. ㅠ.ㅠ
한참을 찾아 다녔는데.....
댓글 영역