본문 바로가기

Windows

MFC, Popup context menu

MFC 기반에서의 context popup menu 띄워보자. 



XXX.cpp 에서 (오른쪽 버튼이 눌렸을 때라 가정)


void XXXXX::OnRButtonDown(UINT nFlags, CPoint point)

{

CMenu menu;


// 팝업 메뉴를 생성한다.

menu.CreatePopupMenu();

menu.AppendMenu(MF_STRING, ID_MENU1, _T("Menu 1"));

menu.AppendMenu(MF_STRING, ID_MENU2, _T("Menu 2"));


CPoint pt = point;

ClientToScreen(&pt);

menu.TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt.x, pt.y, this);


menu.DestroyMenu();

        ...

}



XXX.cpp  or XXX.h 에 ID 추가


enum {

ID_MENU_BASE = 20000,

ID_MENU1 = ID_MENU_BASE,

ID_MENU2,

};



XXX.cpp 에서 Message map에 ID와 처리함수 등록


BEGIN_MESSAGE_MAP(xxx, xxx)

...

ON_COMMAND(ID_MENU1, &XXX::OnMenu1)

ON_COMMAND(ID_MENU2, &XXX::OnMenu2)

END_MESSAGE_MAP()



XXX.h 에서는...  처리 함수 선언


class XXX 

{

        ...

public:

afx_msg void OnMenu1();

afx_msg void OnMenu2();

}



XXX.cpp 에서는...  처리 함수 구현


void XXX::OnMenu1()

{

// ~~~

}


void XXX::OnMenu2()

{

// ~~~

}


'Windows' 카테고리의 다른 글

[MFC] Double buffering  (0) 2016.05.27
[MFC] Draw Text  (0) 2016.05.27
Virtual list control (리스트 아이템 가상화?)  (0) 2016.04.21
Loading system icon  (0) 2016.04.20
MFC Control Focusing & Arraw Keys  (0) 2016.04.15