MFC 강좌, MFC 마우스 우클릭, 동적 메뉴 생성 이벤트

MFC 강좌, MFC 마우스 우클릭, 동적 메뉴 생성 이벤트


MFC 강좌 마우스 이벤트


[MFC 강좌] MFC 마우스 우클릭 소스


프로젝트 - MenuExam.zip [클릭]

실행파일 - MenuExam.exe [클릭]


이번 MFC 강좌 주제는 이렇습니다.

다이얼로그 버튼에 마우스 우클릭을 했을 때, 아래 그림처럼 메뉴가 나오는 것이죠. MFC 동적 마우스 이벤트 예제입니다.


MFC 강좌 마우스


MFC 강좌 시작합니다.

우선, MenuExam이란 프로젝트를 하나 만들고 리소스 추가를 눌러 줍니다.


MFC 마우스 이벤트


추가할 리소스는 Menu입니다.


Menu를 선택하고 새로 만들기를 눌러주세요.


MFC 마우스 우클릭 이벤트


저는 MFC 강좌를 위해 새로 생성된 메뉴를 아래처럼 바꿔봤습니다.


아래 메뉴가 마우스 우클릭했을 때 보이는 것이니 원하는 대로 편집하면 됩니다.


MFC 강좌, 마우스 우클릭 이벤트


이어서, 메인 다이얼로그에 버튼을 하나 추가하세요.

이번 MFC 강좌의 메인이나 다름없는 버튼입니다. 이 버튼 위에서 마우스 우클릭이 일어나면 메뉴가 생성된답니다.


마우스 MFC 우클릭 메뉴


이어서, 마우스 우클릭 소스 코드입니다.


MFC에서는 오른쪽 버튼을 누르면 WM_RBUTTONDOWN과 WM_CONTEXTMENU라는 두 개의 이벤트가 발생합니다.


WM_CONTEXTMENU : 팝업 메뉴(컨텍스트 메뉴)를 제어.

WM_CONTEXTMENU : OnContextMenu의 소스 코드를 정의.


다행히 MFC 강좌를 위해 제가 일일이 코딩할 필요는 없었어요.


외국 블로거가 마우스 우클릭 관련하여 좋은 소스를 제공하고 있기에 이걸 편집해 사용합니다. 거의 편집할 게 없어서, 소스를 그대로 사용해도 무방합니다. 


마우스 우클릭 예제 : Using a Context Menu on a Control) [클릭]


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 사용할 메뉴 불러오기
CMenu mnuPopupSubmit;
mnuPopupSubmit.LoadMenu(IDR_MENU1);// 버튼의 포인터 얻어오기
 
CButton *pButton;
pButton = reinterpret_cast<CButton *>(GetDlgItem(IDC_BUTTON1));// 버튼의 넓이 구하기
 
CRect Button1;
pButton->GetWindowRect(&Button1);// 메뉴의 첫번째 아이템에 포인터 얻어오기
CMenu *mnuPopupMenu = mnuPopupSubmit.GetSubMenu(0);
 
ASSERT(mnuPopupMenu); // 사용자가 우클릭한 버튼이 어떤 것인가 알아내기
                                       // 왜냐면, 아무 버튼에나 마구 동작하면 안되니깐
 
if(Button1.PtInRect(point))
    mnuPopupMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this);
cs


그리고 마우스 우클릭과 좌클릭을 구분해 보기 위해서 아래처럼 간단한 메시지 박스도 추가합니다.


1
2
3
4
void CMenuExamDlg::OnBnClickedButton1()
{
    AfxMessageBox("왼쪽 버튼으로 누르셨군요");
}
cs


여기까지, 프로젝트를 구성했다면, 우클릭을 통해서 메뉴가 생성되는 것을 확인할 수 있습니다.


첨부 파일을 확인하세요.


MFC 강좌, MFC 마우스 우클릭, 동적 메뉴 생성 이벤트

이 글을 공유하기

댓글(0)

Designed by JB FACTORY