目的:本文中使用LISTCONTROL控件显示信息病人的信息,在控件中右击弹出菜单,选中菜单中的“新建病人信息”项,出现病人信息窗口;
开发环境:VS2008SP1
步骤:
1、在窗体上放置LISTCONTROL控件,初始化里面的内容;
2、设计菜单
选中资源视图->右击添加资源->选中"Menu"->插入;
编辑好内容;
3、实现在LISTCONTROL中右击弹出菜单效果
添加listcontrol控件中的NM_RCLICK事件
void CFormPatient::OnNMRClickListlLeft(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(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、实现效果如下图