Custom Right-click menu:
1 #ifndef _contextmenu_h_2 #define_contextmenu_h_3#include <windows.h>4 5 6 //dynamic Menu7 #defineItem_menu_reply 400018 #defineItem_menu_allreplay 400029 #defineItem_menu_relay 40003Ten #defineItem_menu_delete 40004 One #defineItem_menu_finaldelete 40005 A #defineItem_meun_mark 40006 - #defineItem_submenu_unseen 40007 - #defineItem_submenu_seen 40008 the - - classCcontextpopmenu - { + Public: - Ccontextpopmenu (); +~Ccontextpopmenu (); A at voidPopmenu (HWND hwnd,intNxintNY); - voidPopmenu (HWND hwnd,Constpoint&PT); - - voidEnablemenu (intNitem,BOOLnenable); - Private: - HMENU M_ppopmenu; in }; - #endif
1#include"ContextMenu.h"2 3 Ccontextpopmenu::ccontextpopmenu ()4 {5M_ppopmenu =CreatePopupMenu ();6 if(M_ppopmenu)7 {8HMENU submenu =:: CreatePopupMenu ();9:: InsertMenu (M_ppopmenu, (-1), Mf_byposition,item_menu_reply,text ("reply"));Ten:: InsertMenu (M_ppopmenu, (-1), Mf_byposition,item_menu_allreplay,text ("Reply All")); One:: InsertMenu (M_ppopmenu, (-1), Mf_byposition,item_menu_relay,text ("forwarding")); A:: InsertMenu (M_ppopmenu, (-1), Mf_byposition,item_menu_delete,text ("Delete")); -:: InsertMenu (M_ppopmenu, (-1), Mf_byposition,item_menu_finaldelete,text ("completely removed")); -:: InsertMenu (M_ppopmenu, (-1), mf_byposition| Mf_popup, (unsignedint) Submenu,text ("Mark")); the:: InsertMenu (submenu, (-1), mf_byposition| Mf_popup,item_submenu_unseen,text ("Unread Messages")); -:: InsertMenu (submenu, (-1), mf_byposition| Mf_popup,item_submenu_seen,text ("Read Mail")); - } - } + -ccontextpopmenu::~Ccontextpopmenu () + { A if(M_ppopmenu) at { - DestroyMenu (m_ppopmenu); -M_ppopmenu =NULL; - } - } - in voidCcontextpopmenu::P Opmenu (HWND hwnd,intNxintNY) - { to if(M_ppopmenu &&hwnd) + { -TrackPopupMenu (m_ppopmenu,tpm_leftalign| Tpm_rightbutton,nx,ny,0, Hwnd,null) the } * } $ Panax Notoginseng voidCcontextpopmenu::P Opmenu (HWND hwnd,Constpoint&PT) - { the Popmenu (HWND,PT.X,PT.Y); +}
The WndProc callback function is then created when the response to the Wm_rbuttonup function
1 Case Wm_rbuttonup: 2 Point pt; 3 :: GetCursorPos (&PT); 4 New Ccontextpopmenu; 5 Ppopmenu->Popmenu (hwnd,pt); 6 break;
The response to each menu item is processed in the WM_COMMAND message.
1 CaseWm_command:2 Switch(LoWord (wParam))3 {4 Caseitem_menu_reply:5MessageBox (Null,text ("Response Reply menu item"), TEXT ("Tips"), MB_OK);6 Break;;7 CaseItem_submenu_unseen:8MessageBox (Null,text ("Response Marker submenu item"), TEXT ("Tips"), MB_OK);9 Break;Ten}
Draw someone else's code: http://blog.csdn.net/bizhu12/article/details/6664210
WIN32 Create right-click Popup (Popmenu)