MFC弹出菜单使用笔记

目的:本文中使用LISTCONTROL控件显示信息病人的信息,在控件中右击弹出菜单,选中菜单中的“新建病人信息”项,出现病人信息窗口;

开发环境:VS2008SP1

步骤:

1、在窗体上放置LISTCONTROL控件,初始化里面的内容;


2、设计菜单

选中资源视图->右击添加资源->选中"Menu"->插入;

MFC弹出菜单使用笔记_第1张图片

编辑好内容;

3、实现在LISTCONTROL中右击弹出菜单效果

添加listcontrol控件中的NM_RCLICK事件

void CFormPatient::OnNMRClickListlLeft(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
CPoint pos; 
GetCursorPos(&pos); //得到坐标
CMenu m_popmenu;
m_popmenu.LoadMenu(IDR_MENU2);//加载资源
CMenu* m_submenu = m_popmenu.GetSubMenu(0);
m_submenu->TrackPopupMenu(TPM_LEFTBUTTON|TPM_LEFTALIGN,pos.x,pos.y,this);//显示弹出菜单
m_popmenu.DestroyMenu();

*pResult = 0;
}

4、实现单击弹出菜单打开一个窗口

手动添加消息响应事件

BEGIN_MESSAGE_MAP(CFormPatient, CDialog)
.......
ON_COMMAND(ID_32808,  &CFormPatient::OnMenuSetInfo)
END_MESSAGE_MAP()

在头文件中声明函数

afx_msg void OnMenuSetInfo();

在源文件中定义函数

void CFormPatient::OnMenuSetInfo()
{
CSetPatient *m_CSetPatient = new CSetPatient();//新建窗口
m_CSetPatient->Create(IDD_DIALOG_SetPatient);
m_CSetPatient->ShowWindow(SW_SHOW);//显示窗口

}

5、实现效果如下图

MFC弹出菜单使用笔记_第2张图片





你可能感兴趣的:(MFC,VS2008)