zoukankan      html  css  js  c++  java
  • ListCtrl添加右键菜单(ListCtrl类里编辑,给ListCtrl 发送NM_RCLICK消息)

    在开发中会用到右键菜单,我们来一起学习一下。

    假如,我们现在已经准备好了列表,就差右键处理了。

    1、在资源视图中的添加一个MENU,如图

    2、给要添加右键菜单的ListCtrl子类,添加消息

    按 ctrl + shift + x  打开类向导,选择要添加的子类,在消息中找到 =NM_RCLICK消息,双击=NM_RCLICK,就会在右侧出现OnNMRClick,然后点击编辑代码即可

    3、编辑代码

    void CRunSerListCtr::OnNMRClick(NMHDR *pNMHDR, LRESULT *pResult)
    {
    	LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
    	// TODO:  在此添加控件通知处理程序代码
    	*pResult = 0;
    
    	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
    	if (pNMListView->iItem != -1)
    	{
    		DWORD dwPos = GetMessagePos();
    		CPoint point(LOWORD(dwPos), HIWORD(dwPos));
    		CMenu menu;
    		//添加线程操作
    		VERIFY(menu.LoadMenu(IDR_MENU1));			//这里是我们在1中定义的MENU的文件名称
    		CMenu* popup = menu.GetSubMenu(0);
    		ASSERT(popup != NULL);
    		popup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this);
    
    		//下面的两行代码主要是为了后面的操作为准备的
    		//获取列表视图控件中第一个被选择项的位置  
    		POSITION m_pstion = GetFirstSelectedItemPosition();
    		//该函数获取由pos指定的列表项的索引,然后将pos设置为下一个位置的POSITION值
    		m_nIndex = GetNextSelectedItem(m_pstion);
    
    		CString str;
    		str.Format(L" m_nIndex = %d", m_nIndex);
    		MessageBox(str, str, 0);
    	}
    
    }

    测试效果

    
    
    赌上我的人生为梦想,即使是臭名远扬,也要我的名字响彻天堂
  • 相关阅读:
    zbb20170604 在linux (64bit)下安装rar for linux
    zbb20170601 oracle 存储过程 函数 包
    zbb20170601 oracle PL/SQL 语句块 游标 自定义游标 异常处理EXCEPTION
    5、Spring+Struts2+MyBatis+分页(mybatis无代理)增删改查
    2、枚举
    3、时间和随机数
    4、Spring+MyBatis增删改查
    3、Spring的AOP详解和案例
    2、Spring的 IoC详解(第一个Spring程序)
    1、Spring概述
  • 原文地址:https://www.cnblogs.com/ye-ming/p/7107625.html
Copyright © 2011-2022 走看看