MFC CListCtrl

列名、行内容的添加、删除。

据列名、行内容长度设置列宽。

排序。

 

提升权限

BOOL CDemoListCtrlApp::EnableDebugPrivilege()
{  HANDLE token;  if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&token))  {  return FALSE;  }  TOKEN_PRIVILEGES tkp;  tkp.PrivilegeCount = 1;  ::LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&tkp.Privileges[0].Luid);  tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;  if(!AdjustTokenPrivileges(token,FALSE,&tkp,sizeof(tkp),NULL,NULL))  {  return FALSE;  }  CloseHandle(token);  return TRUE;  
} 

 

取进程全路径

BOOL MFCTool::DosPathToNtPath( LPTSTR pszDosPath, LPTSTR pszNtPath )
{TCHAR            szDriveStr[500];TCHAR            szDrive[3];TCHAR            szDevName[100];INT                cchDevName;INT                i;//检查参数if(!pszDosPath || !pszNtPath )return FALSE;//获取本地磁盘字符串if(GetLogicalDriveStrings(sizeof(szDriveStr), szDriveStr)){for(i = 0; szDriveStr[i]; i += 4){if(!lstrcmpi(&(szDriveStr[i]), _T("A:\\")) || !lstrcmpi(&(szDriveStr[i]), _T("B:\\")))continue;szDrive[0] = szDriveStr[i];szDrive[1] = szDriveStr[i + 1];szDrive[2] = '\0';if(!QueryDosDevice(szDrive, szDevName, 100))//查询 Dos 设备名return FALSE;cchDevName = lstrlen(szDevName);if(_tcsnicmp(pszDosPath, szDevName, cchDevName) == 0)//命中
            {lstrcpy(pszNtPath, szDrive);//复制驱动器lstrcat(pszNtPath, pszDosPath + cchDevName);//复制路径return TRUE;}           }}lstrcpy(pszNtPath, pszDosPath);return FALSE;
}BOOL MFCTool::GetProcessFullPath( DWORD dwPID, TCHAR pszFullPath[MAX_PATH] )
{TCHAR        szImagePath[MAX_PATH];HANDLE        hProcess;if(!pszFullPath)return FALSE;pszFullPath[0] = '\0';hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0, dwPID);if(!hProcess)return FALSE;if(!GetProcessImageFileName(hProcess, szImagePath, MAX_PATH)){CloseHandle(hProcess);return FALSE;}if(!DosPathToNtPath(szImagePath, pszFullPath)){CloseHandle(hProcess);return FALSE;}CloseHandle(hProcess);return TRUE;
}

 

显示进程

void CDemoListCtrlDlg::ShowProcess( CListCtrl& listctrl )
{//清除所有内容行
    listctrl.DeleteAllItems();//清除所有列名while (listctrl.DeleteColumn(0)){}//设置显示模式,网格+选中全行listctrl.SetExtendedStyle(listctrl.GetExtendedStyle() | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);//内容添加结束前停止生绘
    listctrl.SetRedraw(FALSE);//添加列名listctrl.InsertColumn(0, "PID");listctrl.InsertColumn(1, "NAME");listctrl.InsertColumn(2, "FULLPATH");HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);if (INVALID_HANDLE_VALUE != hSnap){PROCESSENTRY32 item;item.dwSize = sizeof(item);if (Process32First(hSnap, &item)){CString str;int iLine = 0;char chPath[MAX_PATH];MFCTool mfctool;do {str.Format("%d", item.th32ProcessID);listctrl.InsertItem(iLine, str);listctrl.SetItemText(iLine, 1, item.szExeFile);memset(chPath, 0, MAX_PATH);mfctool.GetProcessFullPath(item.th32ProcessID, chPath);str.Format("%s", chPath);listctrl.SetItemText(iLine, 2, str);iLine++;} while (Process32Next(hSnap, &item));}CloseHandle(hSnap);hSnap = INVALID_HANDLE_VALUE;}//自动变列宽,据字段名&字段值长度int iCount = listctrl.GetHeaderCtrl()->GetItemCount();for (int i = 0; i < iCount; i++){listctrl.SetColumnWidth(i, LVSCW_AUTOSIZE_USEHEADER);}listctrl.SetRedraw(TRUE);
}

 

右键显示菜单

void CDemoListCtrlDlg::OnNMRClickList1(NMHDR *pNMHDR, LRESULT *pResult)
{LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);//弹出菜单
    CPoint pos;if (GetCursorPos(&pos)){CMenu menu;//加载菜单资源
        menu.LoadMenu(IDR_MENU1);//目标子菜单是菜单资源第0列menu.GetSubMenu(0)->TrackPopupMenu(TPM_RIGHTBUTTON, pos.x, pos.y, this);}*pResult = 0;
}

 

右键菜单:刷新

添加菜单资源

xxxDlg.h

class CDemoListCtrlDlg : public CDialog
{
//...public:afx_msg void OnRefreshList1();   
}

xxxDlg.cpp

BEGIN_MESSAGE_MAP(CDemoListCtrlDlg, CDialog)
//...
    ON_COMMAND(ID_REFRESHLIST1, OnRefreshList1)
END_MESSAGE_MAP()void CDemoListCtrlDlg::OnRefreshList1()
{ShowProcess(m_listctrl);
}

 

排序

静态排序函数

响应消息 ON_NOTIFY(NM_CLICK, IDC_LIST1, &CDemoListCtrlDlg::OnNMClickList1)

xxxDlg.h

    static DWORD m_dwSortColumn;static BOOL m_bAscending;//Descending/Ascendingstatic int CALLBACK CompareList1(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);afx_msg void OnLvnColumnclickList1(NMHDR *pNMHDR, LRESULT *pResult);

 

xxxDlg.cpp

int CALLBACK CDemoListCtrlDlg::CompareList1( LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort )
{CListCtrl* pListCtrl = (CListCtrl*)lParamSort;int iCompare = 0; CString strCompare1 = pListCtrl->GetItemText(lParam1, m_dwSortColumn);CString strCompare2 = pListCtrl->GetItemText(lParam2, m_dwSortColumn);switch (m_dwSortColumn){case 0://by idiCompare = atof((char*)strCompare1.GetBuffer(0)) <= atof((char*)strCompare2.GetBuffer(0)) ? -1 : 1; break;default://by stringiCompare = strCompare1.CompareNoCase(strCompare2);break;}if(m_bAscending) {return iCompare;}return -iCompare;
}void CDemoListCtrlDlg::OnLvnColumnclickList1(NMHDR *pNMHDR, LRESULT *pResult)
{LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;m_dwSortColumn = pNMListView->iSubItem;m_bAscending = !m_bAscending;//Descending or Ascending int iCount = m_listctrl.GetItemCount();for (int i = 0; i < iCount; i++)  {  m_listctrl.SetItemData(i, i);  }m_listctrl.SortItems(CompareList1, (LPARAM)&m_listctrl);*pResult = 0;
}

 

选中某行,取各列内容

void CDemoListCtrlDlg::OnNMClickList1(NMHDR *pNMHDR, LRESULT *pResult)
{LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);//selected lineint iSelectedLine = m_listctrl.GetSelectionMark();if (-1 != iSelectedLine){CString str = m_listctrl.GetItemText(iSelectedLine, 0) + "|" + m_listctrl.GetItemText(iSelectedLine, 1)+ "|" + m_listctrl.GetItemText(iSelectedLine, 2);//MessageBox(str);
        SetWindowText(str);}*pResult = 0;
}

 

转载于:https://www.cnblogs.com/nonebutnow/p/6006009.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356599.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快手用旺旺瓶子做机器人_100品牌入榜,在快手的品牌运营怎么做?|11月快手品牌新势力榜揭晓...

11月榜单见证了许多新入驻快手的品牌迅速成长。母婴品牌「安慕斯」实现垂类专业场景剧情化&#xff0c;引起用户发注&#xff0c;激发用户参与&#xff0c;单月涨粉突破60万&#xff1b;服饰箱包运动垂类下的珠宝品牌「DR钻戒」以“一生唯一真爱”的理念抢占消费者心智&#xf…

认识计算机ppt课件游戏,《认识计算机》PPT课件

《认识计算机》PPT课件 认知主义认为 学习是个体对环 境的作用&#xff0c;而并不仅是环境刺激引起的行为改变&#xff1b;环境只能提供潜在刺激&#xff0c;至于这些潜在刺激是否受到注意或被加工&#xff0c;这主要取决于学习者内部的认知结构。 认 识 计 算 机 认知主义认为…

BZOJ1433 ZJOI2009 假期的宿舍 二分图匹配

1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2375 Solved: 1005[Submit][Status][Discuss]Description Input Output Sample Input 1 3 1 1 0 0 1 0 0 1 1 1 0 0 1 0 0Sample Output ˆ ˆHINT 对于30% 的数据满足1 ≤ n ≤ 12。对于100% 的…

Apache Spark中实现的MapReduce设计模式

该博客是该系列文章的第一篇&#xff0c;讨论了MapReduce设计模式一书中的一些设计模式&#xff0c;并展示了如何在Apache Spark&#xff08;R&#xff09;中实现这些模式。 在编写MapReduce或Spark程序时&#xff0c;考虑执行作业的数据流很有用。 即使Pig&#xff0c;Hive&a…

计算机主机风扇安装方法,电脑机箱怎么安装风扇减震胶钉保护主板cup?

炎炎夏日&#xff0c;是时候给你的爱机清清灰&#xff0c;特别是对于机箱散热不好的朋友就需要给电脑机箱装上几个风力强劲的风扇&#xff0c;这样可以大大减少CPU、主板等的老化时间&#xff0c;延长爱机的寿命。现在机箱风扇大都使用橡胶拉钉(或者叫减震钉、固定钉)安装&…

2个css特效冲突了怎么办_患上类风湿病怎么办?2个方法拿走不谢

类风湿是一种常见的疾病&#xff0c;类风湿关节炎简称为类风湿&#xff0c;是一个累及周围关节为主的多系统性炎症性自身免疫病&#xff0c;患者的关节疼痛、肿胀&#xff0c;而且易反复发作。那么&#xff0c;得了类风湿病怎么办&#xff1f;得了类风湿病怎么办目前&#xff0…

将项目导入eclipse中出现的jsp页面报错

图片摘自百度经验&#xff0c;实在是每次都会忘了步骤&#xff0c;每次都得重新百度&#xff0c;所以索性自己总结到博客中&#xff0c;下次如果还记不住就直接从博客中看。原谅我实在学渣&#xff0c;呜呜~~~~(>_<)~~~~ 转载于:https://www.cnblogs.com/yangyufan/p/600…

怎样让计算机恢复到桌面上,如何把电脑桌面恢复成原样.怎么办?

此方案适用XP\VISTA\WIN7系统【问题描述】&#xff1a;桌面图标太多【原因分析】&#xff1a;1.下载的软件快捷方式放到桌面没有进行整理;2.在桌面上放置太多的文件【简易步骤】&#xff1a;【360安全卫士】—【功能大全】—【桌面管理】—【整理桌面个人资料】【解决方案】&am…

中装订线位置_企业宣传画册、产品目录常用的装订方法

印刷是个专业活&#xff0c;特别是画报、画册这些种类多&#xff0c;要求高。下面介绍一下最常用到的三种装订方法&#xff1a;骑马订骑马订(saddlestitch)英文是马鞍的意思&#xff0c;取其于装订之时&#xff0c;将摺好的页子如同为马匹上鞍一般的动作&#xff0c;配至装订机…

使用Hibernate在CQRS读取模型中进行快速开发

在这篇文章中&#xff0c;我将分享一些在CQRS读取模型中使用Hibernate工具进行快速开发的技巧。 为什么要休眠&#xff1f; 休眠非常流行。 从外观上看&#xff0c;它也很容易&#xff0c;而从内部看&#xff0c;它却相当复杂。 它可以很容易地开始使用&#xff0c;而无需进行…

美国东北大学khoury计算机学院,2021年美国东北大学计算机研究生专业有哪些?入学要求高吗?...

在“唯才是用”的时代&#xff0c;高新科技行业人才成为了社会的主流&#xff0c;各行各业也都急需计算机相关人才&#xff0c;美国可谓是计算机领域的鼻祖&#xff0c;拥有着非常先进的互联网技术&#xff0c;除此之外&#xff0c;几乎每所大学都开设了计算机专业&#xff0c;…

c++进制转换代码_轻松实现C/C++各种常见进制相互转换,你还不会你就落后了

这篇文章主要介绍了轻松实现C/C各种常见进制相互转换&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值&#xff0c;需要的朋友们下面随着小编来一起学习学习吧其它进制转为十进制在实现这个需求之前&#xff0c;先简单介绍一…

我的博客是怎么自定义的

第一步&#xff0c;打开设置&#xff0c;一切都在设置里进行&#xff0c;让我们从头到尾&#xff0c;从左到右一步步讲。 1.头像 此头像不是账号头像&#xff0c;是标题那里放图片当头像 <img src"你头像的地址" alt"" /> 步骤&#xff1a;将你喜欢…

2017年计算机三级网络技术试题,2017年计算机三级网络技术考前试题及答案(8)

三、应用题(共20分)请根据下图所示网络结构回答问题。1&#xff0e;填写路由器RG的路由表项(每空2分&#xff0c;共l0分)。2&#xff0e;如果该网络内服务器群的IP地址为58&#xff0e;45&#xff0e;57&#xff0e;11-58&#xff0e;45&#xff0e;57&#xff0e;25&#xff0…

byte数组转为string_String类

API ----StringBufferjava.lang.Object 继承者 java.lang.Stringpublic final class String extends Object implements Serializable, Comparable<String>, CharSequenceYuSLi&#xff1a;String类速查速记​zhuanlan.zhihu.comYuSLi&#xff1a;补充&#xff1a;String…

HBuilder完成webApp入门(3) 关于webview (转)

个人认为WebView是 html5 API的一个非常重要的部分。 WebView 的帮助文档http://www.html5plus.org/doc/zh_cn/webview.html 为什么对WebView的掌握很重要&#xff1f;因为它是一个HTML5 APP的基础。刚刚学习HBuilder的同学一般会将重点放在 mui 组件上。mui 提供了很多默认的方…

佛山市南海技师学校计算机类,佛山南海信息技术学校2021年有哪些专业

即将面临毕业的时候&#xff0c;同学们都要选择学校&#xff0c;都要选择专业就读&#xff0c;至于选择什么&#xff0c;就是一大难题了。学习是重要的事情&#xff0c;选择更是件大事。小编整理了学校的招生专业详情&#xff0c;仅供参考。佛山南海信息技术学校专业名单&#…

创建 floating IP - 每天5分钟玩转 OpenStack(106)

先复习一下前面我们讨论的知识。 当租户网络连接到 Neutron router&#xff0c;通常将 router 作为默认网关。当 router 接收到 instance 的数据包&#xff0c;并将其转发到外网时: 1. router 会修改包的源地址为自己的外网地址&#xff0c;这样确保数据包转发到外网&#xff…

把ipa文件上传到服务器,windows电脑上传ipa到appstore的详细流程

在使用H5混合开发的app打包后&#xff0c;需要将ipa文件上传到appstore进行发布&#xff0c;就需要去苹果开发者中心进行发布。但是在苹果开发者中心无法直接上传ipa文件&#xff0c;它要求我们使用xcode或transport等工具上传ipa文件&#xff0c;但是xcode和transport不能安装…

Java的5个古怪问题

我们有机会尝试了一些最奇怪的Java难题 即使是最有经验的Java开发人员&#xff0c;也会在这篇文章中发现令人困惑的问题。 或至少是有趣的&#xff08;绝对不公平&#xff09;。 在经历了Java Deathmatch冒险之后&#xff0c;我们决定这次发布一系列不同的问题&#xff0c;着重…