1. 给对话框添加列表控件 (类型是CListCtrl)
2. 设置列表控件的样式
3.使用CLASS WIZARD 重载消息
1)打开CLASS WIZARD
2)在ObjectIDs下选中一个CDialog,在Message选中WM_CONTEXTMENU,点击右侧的Add Function,确定
3)在新添加的函数中加载菜单,并将其显示在鼠标点击的位置,代码如下
其中,IDR_MENU1为菜单的ID
void CXXX::OnContextMenu(CWnd* pWnd, CPoint point)
{
// TODO: Add your message handler code here
CMemnu mune;
VERIFY(menu.LoadMenu(IDR_MENU1));
CMenu *p=menu.GetSubMenu(0);
ASSERT(p!=NULL);
p->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON,point.x,point.y,AfxGetMainWnd());
}
注意:在对菜单进行操作是,先使用GetSubMenu得到“头”,再进行其他操作。
补充:上面的代码中menu使用的是一个局部变量
这里,如果使用全局变量,在更换点击位置时,就会出现错误,弹出一个终止的对话框
而使用局部变量就不会出现这样的问题。
(个人程序体会记录,如有错误,欢迎指正!谢谢)