初识MFC:给窗口添加右键弹出式菜单

  环境:VS2012;工程名:POPMENU

第一步:在中创建一个菜单对象

1 //POPMENU.h
2 public:
3     CMenu m_MenuTrack;

 

第二步:初始化这个菜单(可以在资源中加载,也可以手动添加,这里用手动添加)

(Think:应该把这个初始化添加在哪里呢?我们可以重写函数:OnInitialUpdate)

 1 void CPOPMENUView::OnInitialUpdate()
 2 {
 3     CView::OnInitialUpdate();
 4 
 5     // TODO: 在此添加专用代码和/或调用基类
 6 
 7     m_MenuTrack.CreatePopupMenu();
 8     m_MenuTrack.AppendMenu( MF_STRING , IDR_MAX , _T("最大化") );
 9     m_MenuTrack.AppendMenu( MF_STRING , IDR_MIN , _T("最小化") );
10     m_MenuTrack.AppendMenu( MF_STRING , IDR_HIDE , _T("隐藏") );
11     m_MenuTrack.AppendMenu( MF_SEPARATOR );
12     m_MenuTrack.AppendMenu( MF_STRING , IDR_QUIT , _T("退出") );
13 }

 

 第三步:添加触发菜单事件(我们是要鼠标右键按下,弹出菜单,所以添加鼠标右键按下消息)

 1 void CPOPMENUView::OnRButtonDown(UINT nFlags, CPoint point)
 2 {
 3     // TODO: 在此添加消息处理程序代码和/或调用默认值
 4     //获得鼠标焦点
 5     ClientToScreen(&point);
 6     //弹出菜单
 7     m_MenuTrack.TrackPopupMenu( TPM_LEFTALIGN , point.x , point.y , AfxGetMainWnd() );
 8 
 9     CView::OnRButtonDown(nFlags, point);
10 }

 

posted @ 2015-04-30 15:49  netosoul  阅读(1037)  评论(0)    收藏  举报