지금까지 사용한 메뉴 코드는 내부적으로 TrackPopupMenu()함수를 가지고 만들어진 것이라고 한다.
이 함수의 원형은 다음과 같다.
BOOL TrackPopupMenu(
마우스 우클릭으로 메뉴 띄우기.
CCommandDemoView 에 OnRButtonDown 메시지 핸들러를 추가하고 다음과 같이 입력한다.
화면에 서브메뉴 라는게 추가되어있는 이유는 그냥 추가했기 때문.
다른 메뉴를 만들듯이 만들면 된다.
특이한점은 서브 메뉴 와 마찬가지로 하위 메뉴가 있는 메뉴의 경우
ID가 없다는 것.[클릭 자체가 되지 않기 때문이다.]
그러니까 그림으로 표현하면 이렇게된다.
이런 식으로 이해하면 편하다.
이 함수의 원형은 다음과 같다.
BOOL TrackPopupMenu(
UINT nFlags, //메뉴 윈도우의 위치, 에니메이션효과 등 동작특성을 결정
int x, int y, //출력할 좌표 **반드시 스크린 기준
CWnd* pWnd, // WM_COMMAND 메시지를 전송할 윈도우 객체의 주소.
LPCRECT lpRect = NULL //이값은 현재 사용하지않음.
);
다음으로는 속성값들을 정리한 내용이다
마우스 우클릭으로 메뉴 띄우기.
CCommandDemoView 에 OnRButtonDown 메시지 핸들러를 추가하고 다음과 같이 입력한다.
void CCommandDemoView::OnRButtonDown(UINT nFlags, CPoint point)
{
CMenu* pMainMenu = AfxGetMainWnd()->GetMenu();
//CMainFrame 윈도우의 메뉴에 대한 포인터를 가져온다.
//CMainFrame 윈도우의 메뉴에 대한 포인터를 가져온다.
CMenu* pSubMenu = pMainMenu->GetSubMenu(4);
//메인 메뉴중에서 4번 인덱스의 서브메뉴에 대한 포인터를 가져온다.
//메인 메뉴중에서 4번 인덱스의 서브메뉴에 대한 포인터를 가져온다.
CPoint ptMenu = point;//스크린 기준으로 좌표 변환.
ClientToScreen(&ptMenu);
pSubMenu->TrackPopupMenu(TPM_LEFTBUTTON | TPM_LEFTALIGN, ptMenu.x, ptMenu.y, AfxGetMainWnd());
//WM_COMMAND 메시지가 메인 프레임 윈도우에 전달되도록 팝업 메뉴 윈도우를 출력한다.
//속성은 보다시피 왼클릭으로 내부 메뉴 클릭 지정 위치[마우스의 위치] 의 좌측정렬.
CView::OnRButtonDown(nFlags, point);
}
출력시 화면
출력시 화면
화면에 서브메뉴 라는게 추가되어있는 이유는 그냥 추가했기 때문.
다른 메뉴를 만들듯이 만들면 된다.
특이한점은 서브 메뉴 와 마찬가지로 하위 메뉴가 있는 메뉴의 경우
ID가 없다는 것.[클릭 자체가 되지 않기 때문이다.]
그러니까 그림으로 표현하면 이렇게된다.
이런 식으로 이해하면 편하다.
'공부 > MFC' 카테고리의 다른 글
그림판 따라하기 진행중 (0) | 2011.12.12 |
---|---|
커서 제작. 핫 스폿 (0) | 2011.12.09 |
Visual C++ 2008 MFC Chapter 10 메뉴~ -3 (0) | 2011.12.08 |
Visual C++ 2008 MFC Chapter 10 메뉴~ -2 (0) | 2011.12.08 |
Visual C++ 2008 MFC Chapter 10 메뉴/바로 가기 키/도구 모음/상태 표시줄 (0) | 2011.12.08 |