MFC中的CListCtrl添加右键菜单消息响应实例分析
2017-08-25 16:12
1881 查看
一.创建一个菜单资源无论是静态还是动态,首先必须创建一个菜单资源,因为我们右键点击ClistCtrl的一项之后需要弹出一个菜单。
二.给菜单添加消息响应这一步跟一般的使用菜单时添加消息响应是一样的,假如是如上面静态创建的菜单的话,那么直接使用向导生成一个菜单响应函数即可。
上面的代码是给菜单项“购买”添加一个响应函数,当我们选中一行,单击鼠标右键,那么这个菜单便会弹出来,我们选择相应的菜单项后就可以进行菜单项指定的操作,这些操作都是在菜单项响应函数中实现的。
上面的代码有一个关于CListCtrl的重要操作,就是如何对选中的CListCtrl项进行处理,涉及到的API有GetNextItem,GetFirstSelectedItemPosition以及GetItemText。
三.对CListCtrl进行消息处理(1)给CListCtrl控件增添事件
增加NM_RBLCLK事件,生成一个响应函数。
四.效果演示
二.给菜单添加消息响应这一步跟一般的使用菜单时添加消息响应是一样的,假如是如上面静态创建的菜单的话,那么直接使用向导生成一个菜单响应函数即可。
void CCustomerQueryBookInfoDlg::OnMenuBuy() { // TODO: Add your command handler code here // 进行购买操作,增加一个订单信息即可 OrderInfo order ; int nRet = 0 ; int nItem = 0 ; CString bookId ; UpdateData() ; // 获取选中CListCtrl控件的一行,获取信息 int nIndex = m_bookInfoListCtrl.GetNextItem(-1,LVIS_SELECTED); POSITION ps = m_bookInfoListCtrl.GetFirstSelectedItemPosition() ; if( NULL != ps ) { nItem = m_bookInfoListCtrl.GetNextSelectedItem( ps ) ; bookId = m_bookInfoListCtrl.GetItemText( nItem , 0 ) ; } // 构造订单数据 strcpy( order.bookId , (LPSTR)(LPCTSTR)bookId ) ; char tmp[20] ; itoa( (_ttoi(bookId) + 1) , tmp , 10 ) ; strcpy( order.orderId , tmp ) ; strcpy( order.buyerId , g_user.userId ) ; strcpy( order.buyType , "VIP" ) ; nRet = Insert( "f:\\db\\netBookShop.db" , "OrderInfo" , &order , INSERT_ORDER ) ; if( 1 == nRet ) { MessageBox( "Buy success!" , "Message" ) ; } else { MessageBox( "Buy fail!" , "Message" ) ; } }
上面的代码是给菜单项“购买”添加一个响应函数,当我们选中一行,单击鼠标右键,那么这个菜单便会弹出来,我们选择相应的菜单项后就可以进行菜单项指定的操作,这些操作都是在菜单项响应函数中实现的。
上面的代码有一个关于CListCtrl的重要操作,就是如何对选中的CListCtrl项进行处理,涉及到的API有GetNextItem,GetFirstSelectedItemPosition以及GetItemText。
三.对CListCtrl进行消息处理(1)给CListCtrl控件增添事件
增加NM_RBLCLK事件,生成一个响应函数。
void CCustomerQueryBookInfoDlg::OnRclickListQueryBookInfo(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here POINT pt; GetCursorPos(&pt); int x=m_bookInfoListCtrl.GetSelectionMark(); CMenu menu; menu.LoadMenuA(IDR_MENU_LISTCTRL1 ); CMenu * pop=menu.GetSubMenu(0); pop->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,pt.x,pt.y,this) ; *pResult = 0; }
四.效果演示
相关文章推荐
- MFC中的CListCtrl添加右键菜单消息响应实例分析
- MFC中动态创建N级菜单以及响应事件——续——动态添加菜单/菜单项、子菜单、右键菜单
- MFC添加鼠标右键菜单消息
- mfc使用CListCtrl添加右键菜单及双击(以默认方式)打开文件。
- MFC CListCtrl控件添加右键菜单
- MFC学习笔记.day03-菜单,图形标记菜单创建,菜单栏禁用,命令响应,右键弹出菜单,添加菜单
- MFC消息响应机制分析
- MFC添加菜单的位置及其响应顺序
- MFC中如何给静态文本框添加消息响应
- MFC对话框程序中添加工具栏及工具栏上的Button响应UPDATE_COMMAND_UI消息
- CListCtrl添加右键菜单
- MFC消息响应机制分析
- MFC动态创建控件及添加消息响应
- 【Cocos2d-x游戏引擎开发笔记(3)】在屏幕上渲染菜单并添加消息响应
- MFC对话框程序中添加工具栏及工具栏上的Button响应UPDATE_COMMAND_UI消息
- MFC为应用程序添加托盘(右键托盘,弹出菜单)
- 给CListCtrl添加右键菜单
- MFC 右键响应菜单的方法
- MFC单文档添加按钮控件、消息响应函数
- MFC动态创建控件及添加消息响应