티스토리 뷰

목차

    반응형

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


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


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



    MFC 강좌 마우스[C++ Mouse 제어 클릭] 좌표 응용 이벤트



    MFC 강좌 시작합니다.

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



    MFC 마우스 이벤트[C++ Mouse 제어 클릭] 좌표 응용 이벤트


    추가할 리소스는 Menu입니다. Menu를 선택하고 새로 만들기를 눌러주세요.



    MFC 마우스 우클릭 이벤트[C++ Mouse 제어 클릭] 좌표 응용 이벤트



    저는 『MFC 강좌』를 위해 새로 생성된 메뉴를 아래처럼 바꿔봤습니다. 아래 메뉴가 마우스 우클릭했을 때 보이는 것이니 원하는 대로 편집하면 됩니다.



    MFC 강좌, 마우스 우클릭 이벤트[C++ Mouse 제어 클릭] 좌표 응용 이벤트



    이어서, 메인 다이얼로그에 버튼을 하나 추가하세요. 이번 MFC 강좌의 메인이나 다름없는 버튼입니다. 이 버튼 위에서 마우스 우클릭이 일어나면 메뉴가 생성된답니다.



    마우스 MFC 우클릭 메뉴[C++ Mouse 제어 클릭] 좌표 응용 이벤트



    이어서, 마우스 우클릭 소스 코드입니다. MFC에서는 오른쪽 버튼을 누르면 WM_RBUTTONDOWN과 WM_CONTEXTMENU라는 두 개의 이벤트가 발생합니다.


     WM_CONTEXTMENU

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

     WM_CONTEXTMENU

     OnContextMenu의 소스 코드를 정의


    다행히 MFC 강좌를 위해 제가 일일이 코딩할 필요는 없었어요. 외국 블로거가 마우스 우클릭 관련하여 좋은 소스를 제공하고 있기에 이걸 편집해 사용합니다. 거의 편집할 게 없어서, 소스를 그대로 사용해도 무방합니다. 



    MFC 강좌 마우스 이벤트[C++ Mouse 제어 클릭] 좌표 응용 이벤트




    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 강좌] 마우스 우클릭, 동적 메뉴 생성 이벤트

    반응형