mfc的CTreeCtrl控件实现windows的资源管理器

2023-05-16

  1. BOOL Cwp8MtpTestDlg::OnInitDialog()  
  2. {  
  3.     CDialog::OnInitDialog();  
  4. //设置目录树样式  
  5.     DWORD dwStyle = GetWindowLong(m_pcTreeCtrl.m_hWnd,GWL_STYLE);  
  6.     dwStyle |= TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT;  
  7.     SetWindowLong(m_pcTreeCtrl.m_hWnd,GWL_STYLE,dwStyle);  
  8.     //绑定图标链表  
  9.     m_pcTreeCtrl.SetImageList(CFileIcon::GetSysImgList(), TVSIL_NORMAL);   
  10.     m_hPCTreeRoot = m_pcTreeCtrl.InsertItem(_T("我的电脑"),1,1);  
  11.     GetLogicalDrives(m_hPCTreeRoot);//获取本地驱动器加载到目录树  
  12.     GetDriveDir(m_hPCTreeRoot); //获取驱动器下一级文件夹到目录树  
  13.     return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE  
  14. }  
  15. // 获取盘符到目录树,作为根目录下一级节点  
  16. void Cwp8MtpTestDlg::GetLogicalDrives(HTREEITEM hRoot)  
  17. {  
  18.     size_t szAllDrivesStrings = GetLogicalDriveStrings(0,NULL); //获取驱动器字符长度  
  19.     WCHAR* pDriveStrings = new WCHAR[szAllDrivesStrings + sizeof(_T(""))];//定义字符串存储驱动器字符pDriveStrings  
  20.     GetLogicalDriveStrings((DWORD)szAllDrivesStrings,pDriveStrings);//获取驱动器字符到pDriveStrings  
  21.     //截取单个驱动器字符出来添加到目录树上  
  22.     //定义临时字符指针指向驱动器字符信息  
  23.     //(为了最后可以释放驱动器字符串方便,如果直接移动字符串指针,  
  24.     //后面调用delete释放字符串资源的时候会报错)  
  25. WCHAR* pTempDrive = pDriveStrings;  
  26.     size_t szDriveString = wcslen(pTempDrive);  
  27.     while(szDriveString>0)  
  28.     {  
  29.         m_pcTreeCtrl.InsertItem(pTempDrive,2,2,hRoot);//加载解析后的一个驱动器信息到目录树  
  30.         pTempDrive += szDriveString + 1;  
  31.         szDriveString = wcslen(pTempDrive);  
  32.     }  
  33.     delete pDriveStrings;  
  34. }  
  35. // 获取驱动器下一级目录到目录树上显示  
  36. void Cwp8MtpTestDlg::GetDriveDir(HTREEITEM hRoot)  
  37. {  
  38.     HTREEITEM hChild = m_pcTreeCtrl.GetChildItem(hRoot);//获取根节点下的第一个盘符节点  
  39.     while(hChild)  
  40.     {  
  41.         //获取查找路径  
  42.         CString strText = m_pcTreeCtrl.GetItemText(hChild);  
  43.         if(strText.Right(1) != _T("\\"))  
  44.         {  
  45.             strText += _T("\\");  
  46.         }  
  47. strText += _T("*.*");  
  48.         CFileFind fileFind;  
  49.         BOOL bContinue = fileFind.FindFile(strText);  
  50.         CString tempPath;  
  51.         while(bContinue)  
  52.         {  
  53.             bContinue = fileFind.FindNextFile();  
  54.             //不是[.]或[..]的时候,加载到目录树  
  55.             if(!fileFind.IsDots())  
  56.             {  
  57.                 if (fileFind.IsDirectory())  
  58.                 {//加载不同的图标  
  59.                     m_pcTreeCtrl.InsertItem(fileFind.GetFileName(),3,4,hChild);  
  60.                 }  
  61. else  
  62.                 {  
  63.                     tempPath = strText;  
  64.                     int index = tempPath.Find(_T("*.*"));  
  65.                     tempPath.Delete(index,3);   
  66.                     int iIcon = CFileIcon::GetSysIcon(tempPath+fileFind.GetFileName());//获取文件图标  
  67.                     m_pcTreeCtrl.InsertItem(fileFind.GetFileName(),iIcon,iIcon,hChild);  
  68.                 }  
  69.             }  
  70.         }  
  71.         //到下一个驱动器  
  72.         hChild = m_pcTreeCtrl.GetNextItem(hChild,TVGN_NEXT);  
  73.     }  
  74. }  
  75. // 根据目录树中任一节点获取其所有子目录  
  76. void Cwp8MtpTestDlg::AddSubDir(HTREEITEM hParent)  
  77. {  
  78.     //因为每次节点展开都执行了添加,为了避免重复,所以需要先删除   
[html]  view plain  copy
  1.     DelTreeItemChildes(hParent);  
  2.   
  3.     CString strPath = GetFullPath(hParent);  
  4.     if(strPath.Right(1) != _T("\\"))  
  5.     {  
  6.         strPath += _T("\\");  
  7.     }  
  8.     strPath += _T("*.*");  
  9.     CFileFind fileFind;  
  10.     BOOL bContinue = fileFind.FindFile(strPath);  
  11.     CString tempPath;  
  12.     while(bContinue)  
  13.     {bContinue = fileFind.FindNextFile();   
  14.         if(!fileFind.IsDots())  
  15.         {  
  16.             if (fileFind.IsDirectory())  
  17.             {  
  18.                 m_pcTreeCtrl.InsertItem(fileFind.GetFileName(),3,4,hParent);  
  19.             }  
  20.             else  
  21.             {  
  22.                 tempPath = strPath;  
  23.                 int index = tempPath.Find(_T("*.*"));  
  24.                 tempPath.Delete(index,3);   
  25.                 int iIcon = CFileIcon::GetSysIcon(tempPath+fileFind.GetFileName());//获取文件图标  
  26.                 m_pcTreeCtrl.InsertItem(fileFind.GetFileName(),iIcon,iIcon,hParent);  
  27.             }  
  28.         }  
  29.     }  
  30. }  
  31. //删除hParent节点下面的 所有的子节点,但是不删除hParent节点  
  32. void Cwp8MtpTestDlg::DelTreeItemChildes(HTREEITEM hParent)  
  33. {  
  34.     HTREEITEM hCurrent = m_pcTreeCtrl.GetChildItem(hParent);  
  35.     HTREEITEM hNext = hCurrent;  
  36.     while (hCurrent != NULL)  
  37.     {  
  38.         hNext = m_pcTreeCtrl.GetNextItem(hCurrent, TVGN_NEXT);  
  39.         m_pcTreeCtrl.DeleteItem(hCurrent);  
  40.         hCurrent = hNext;  
  41.     }  
  42. }  
  43. // 获取某节点的文件路径  
  44. CString Cwp8MtpTestDlg::GetFullPath(HTREEITEM hCurrent)  
  45. {  
  46.     CString strTemp = _T("");  
  47.     CString strFullPath = _T("");  
  48.     while(hCurrent != m_hPCTreeRoot)  
  49.     {  
  50.         //从当前节点找起,依次找出其父节点,到根节点结束  
  51.         strTemp = m_pcTreeCtrl.GetItemText(hCurrent);  
  52.         if(strTemp.Right(1) != _T("\\"))  
  53.             strTemp += _T("\\");  
  54.         strFullPath = strTemp + strFullPath;  
  55.         hCurrent = m_pcTreeCtrl.GetParentItem(hCurrent);  
  56.     }  
  57.     return strFullPath;  
  58. }  
  59. void Cwp8MtpTestDlg::OnTvnItemexpandedPcTree(NMHDR *pNMHDR, LRESULT *pResult)  
  60. {  
  61.     LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);  
  62.     // TODO: 在此添加控件通知处理程序代码  
  63.     TVITEM item = pNMTreeView->itemNew;              //获取当前展开节点  
  64.     //如果当前展开节点为根节点,则返回  
  65.     if(item.hItem == m_hPCTreeRoot)  
  66.         return;  
  67.     //轮训展开节点的每个子节点,加载文件目录信息到子节点上  
  68.     HTREEITEM hChild = m_pcTreeCtrl.GetChildItem(item.hItem);  
  69.     while(hChild!=NULL)  
  70.     {  
  71.         AddSubDir(hChild);  
  72.         hChild = m_pcTreeCtrl.GetNextItem(hChild,TVGN_NEXT);  
  73.     }  
  74.     *pResult = 0;  
  75. }  

 

下面就是实现的获取系统图标的CFileIcon类

CFileIcon.h

[html]  view plain  copy
  1. #pragma once  
  2.   
  3. class CFileIcon  
  4. {  
  5. public:  
  6.     CFileIcon(void);  
  7.     ~CFileIcon(void);  
  8.     static CImageList* GetSysImgList();  
  9.     static int GetSysIcon(const CString &filePath);  
  10. private:  
  11.     static CImageList* m_img;  
  12.     static int m_imageid;  
  13.     static int m_videoid;  
  14.     static int m_musicid;  
  15. };  


接下来是cpp文件

[html]  view plain  copy
  1. #include "FileIcon.h"  
  2.   
  3. CImageList* CFileIcon::m_img = NULL;  
  4. int CFileIcon::m_imageid = 0;  
  5. int CFileIcon::m_videoid = 0;  
  6. int CFileIcon::m_musicid = 0;  
  7.   
  8. CFileIcon::CFileIcon(void)  
  9. {  
  10.   
  11. }  
  12.   
  13. CFileIcon::~CFileIcon(void)  
  14. {  
  15. }  
  16. CImageList* CFileIcon::GetSysImgList()  
  17. {  
  18.     if (NULL == m_img)  
  19.     {  
  20.         m_img = new CImageList();  
  21.         m_img->Create(GetSystemMetrics(SM_CXSMICON),     
  22.             GetSystemMetrics(SM_CYSMICON),     
  23.             ILC_COLOR24,60,60);   
  24.         //Shell32.Dll 图标资源对照表,这里面的图标很不准  
  25.         //所以打算只使用 我的电脑,磁盘,文件夹这里图片  
  26.         m_img->SetBkColor(GetSysColor(COLOR_WINDOW));   
  27.         //默认图标 无扩展名的  
  28. m_img->Add(ExtractIcon(AfxGetApp()->m_hInstance,_T("shell32.dll"),1));//0  
  29.         //我的电脑  
  30.         m_img->Add(ExtractIcon(AfxGetApp()->m_hInstance,_T("shell32.dll"),15));//1  
  31.         //磁盘  
  32.         m_img->Add(ExtractIcon(AfxGetApp()->m_hInstance,_T("shell32.dll"),8));//2  
  33.         //文件夹闭合  
  34.         m_img->Add(ExtractIcon(AfxGetApp()->m_hInstance,_T("shell32.dll"),3));//3  
  35.         //文件夹打开  
  36.         m_img->Add(ExtractIcon(AfxGetApp()->m_hInstance,_T("shell32.dll"),4));//4  
  37.     }  
  38.          
  39.     return m_img;  
  40. }  
  41. int CFileIcon::GetSysIcon(const CString &filePath)  
  42. {  
  43.     int iIcon = 0;  
  44.     int pos = filePath.ReverseFind('.');  
  45.     CString extenlName = _T("");  
  46.     if(pos != -1)  
  47.     {  
  48.         extenlName = filePath.Mid(pos+1,filePath.GetLength() - pos-1);  
  49.     }  
  50.     extenlName.MakeUpper();  
  51.   
  52.     if ((_T("BMP")==extenlName)||(_T("JPG")==extenlName)||  
  53.         (_T("JPEG")==extenlName)||(_T("PNG")==extenlName)||(_T("GIF")==extenlName))  
  54.     {// 图片  
  55. if (0 == m_imageid)  
  56.         {  
  57.             SHFILEINFO fileInfo;  
  58.             SHGetFileInfo(filePath,0,&fileInfo,sizeof(&fileInfo),SHGFI_ICON|SHGFI_DISPLAYNAME);  
  59.             m_imageid = m_img->Add(fileInfo.hIcon);  
  60.         }  
  61.         iIcon = m_imageid;  
  62.     }  
  63.     else if ((_T("AVI")==extenlName)||(_T("RMVB")==extenlName)||(_T("FLV")==extenlName)||  
  64.         (_T("RM")==extenlName)||(_T("ASF")==extenlName)||(_T("DIVX")==extenlName)||  
  65.         (_T("MPG")==extenlName)||(_T("MPEG")==extenlName)||(_T("MPE")==extenlName)||  
  66.         (_T("WMV")==extenlName)||(_T("MP4")==extenlName)||(_T("MKV")==extenlName)||(_T("VOB")==extenlName))  
  67.     {// 视频  
  68. if (0 == m_videoid)  
  69.         {  
  70.             SHFILEINFO fileInfo;  
  71.             //这个函数可以拿很多图标,只是这个链表会有重复,还没好的处理方式  
  72.             //暂时只做了图片 音乐 视频的  
  73.             SHGetFileInfo(filePath,0,&fileInfo,sizeof(&fileInfo),SHGFI_ICON|SHGFI_DISPLAYNAME);  
  74.             m_videoid = m_img->Add(fileInfo.hIcon);  
  75.         }  
  76.         iIcon = m_videoid;  
  77.     }  
  78. else if ((_T("CD")==extenlName)||(_T("OGG")==extenlName)||(_T("MP3")==extenlName)||  
  79.         (_T("MP3")==extenlName)||(_T("WMA")==extenlName)||(_T("WAV")==extenlName)||  
  80.         (_T("VQF")==extenlName)||(_T("PRO")==extenlName)||(_T("REAL")==extenlName)||  
  81.         (_T("APE")==extenlName)||(_T("MODULE")==extenlName)||(_T("MIDI")==extenlName))  
  82.     {// 音乐  
  83. if (0 == m_musicid)  
  84.         {  
  85.             SHFILEINFO fileInfo;  
  86.             SHGetFileInfo(filePath,0,&fileInfo,sizeof(&fileInfo),SHGFI_ICON|SHGFI_DISPLAYNAME);  
  87.             m_musicid = m_img->Add(fileInfo.hIcon);  
  88.         }  
  89.         iIcon = m_musicid;  
  90.     }  
  91.     return iIcon;  

  1. }  

void CWebDlg::OnNMClickTreefile(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码


LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
TVITEM item = pNMTreeView->itemNew;              //获取当前展开节点




// 判断是点击的展开的“+”号还是点击的节点
if(item.state != 0)
{
HTREEITEM hTree = item.hItem;
if(hTree != NULL)
{
CString strFullPath;
//HTREEITEM hTree = m_pcTreeCtrl.GetSelectedItem();
strFullPath = GetFullPath((HTREEITEM)hTree);
//AfxMessageBox(strFullPath, MB_OK,NULL);
//SetWindowText(IDC_EDIT1,strFullPath);
GetDlgItem(IDC_EDIT1)->SetWindowText(strFullPath);
if(strFullPath.Right(1) != _T("\\") )
{
OnBnClickedButton1();
}
}
}


*pResult = 0;
}

// 根据点击位置获取当前的选择节点


void CPlayDlg::OnClickVideoTree(NMHDR* pNMHDR, LRESULT* pResult) 
{
//m_tree为控件变量
CPoint point;
GetCursorPos(&point);//获得鼠标点击的位置
m_tree.ScreenToClient(&point);//转化为客户坐标
UINT uFlags;
HTREEITEM htem;
htem=m_tree.HitTest(point,&uFlags);//获得当前点击节点的ITEM
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mfc的CTreeCtrl控件实现windows的资源管理器 的相关文章

  • 无法在 Windows 7 上安装 Android USB 驱动程序

    所以我想使用我的新 Nexus 5 来调试我的应用程序 我尝试通过以下方式安装 Android USB 驱动程序装置经理 http developer android com tools extras oem usb html Win7但我
  • 如何从 Java 访问 Windows 设备管理器中的信息?

    我有一个串行 USB 设备 并且其中多个设备可以连接到计算机 我需要查询和检索设备连接到的 COM 端口列表 在 Windows 设备管理器中 您可以获得当前连接的设备的 COM 端口 友好名称 该列表是动态的 从注册表中读取不工作 htt
  • Perl:管理 Windows 上的路径编码

    我正在努力处理包含非英文字符的路径 Activestate Perl Windows XP 如何打开 写入 复制等位于包含希腊语 俄语 法语重音字符的路径中的文件 假设我要将 text txt 文件复制到的目录是 C Documents a
  • 将 SWI Prolog 代码编译为 Windows 可执行文件 - 解析器 Grails3 项目

    我正在尝试构建解析器 Grails3 项目https github com RichardMoot Grail https github com RichardMoot Grail谁的教程是http www labri fr perso m
  • 从 Powershell 更新计划任务脚本

    我正在尝试编写一个每天运行一次的 Powershell 脚本 它将执行的众多功能之一是确保脚本本身是最新的 我的问题是 由于我对脚本进行了版本控制 因此我需要更新从脚本中创建的计划任务 我在这里考虑了两种不同的方法 其中我也无法弄清楚 我最
  • 将目录添加到path环境变量

    我的要求是将目录之一添加到path安装我的应用程序时 Windows 中的环境变量并将其删除path使用批处理文件卸载时的环境变量 在与此相关的 stackoverflow 答案之一中 建议将目录添加到路径环境变量中 setx path C
  • 关闭表单而不退出应用程序

    我目前正在开发一个小项目 希望得到一些帮助 我有两个表单 第一个是登录窗口 第二个是主程序 我遇到的问题是当我关闭时form1 with this Close 它正在退出整个程序 我有一种感觉 我需要使用线程或类似的东西 但我找不到合适的资
  • Windows 控制台支持 ANSI 吗?

    Windows 控制台支持 ANSI 控制字符吗 默认情况下它不支持许多 ANSI 控制字符 维基百科文章中也提到了这一点 http en wikipedia org wiki ANSI escape code http en wikipe
  • 如何在python中获取硬盘驱动器的序列号

    我尝试使用wmi来获取硬盘的序列号 我所做的是这样的 启动ipython并使用以下方式获取序列号 import wmi c wmi WMI for x in c Win32 PhysicalMedia print x 结果是这样的 inst
  • 添加到 .NET 任务栏中的右键单击应用程序菜单

    大多数应用程序只有 恢复 移动 调整大小 最小化 最大化和关闭 但是MS SQL提供了额外的选项 帮助 自定义视图 按照这些思路 是否可以添加到任务栏中应用程序的右键单击菜单 注 我是not指通知区域中时钟旁边的图标 这是一个更简单的ans
  • 如何中止使用 wininet 发送的请求?

    我有一个 MFC 应用程序 用于向相应的服务器发送 post 请求 这是一个http请求 用于上传文件 但有要求中止发送的请求 就像用户正在发送一个大文件一样 用户应该能够在请求完成之前取消请求 我正在使用 wininet api Http
  • 微软怎么能说WinAPI中一个字的大小是16位呢?

    我刚刚开始学习WinAPI 在MSDN中 对WORD数据类型提供了以下解释 WORD16 位无符号整数 范围是十进制 0 到 65535 该类型在 WinDef h 中声明如下 typedef 无符号短 WORD 很简单 而且它与我一直在使
  • 为什么 %processor_architecture% 总是返回 x86 而不是 AMD64

    我正在尝试检索环境变量来检测系统是32位还是64位 但在64位服务器上环境变量 processor architecture 正在返回x86代替AMD64 有人对此有任何线索吗 您可能获得了错误的环境变量 如果您的应用程序是在 64 位操作
  • .NET 或 Windows 同步原语性能规范

    我目前正在写一篇科学文章 我需要非常准确地引用 有人可以向我指出 MSDN MSDN 文章 一些已发表的文章来源或一本书 我可以在其中找到 Windows 或 NET 同步原语的性能比较 我知道这些是按性能降序排列的 互锁 API 关键部分
  • 在 python 2 或 python 3 中编写 csv 文件的便携式方法

    在我的 Windows 机器上 我通常在 python 2 中这样做来编写 csv 文件 import csv f open out csv wb cr csv writer f delimiter cr writerow a b c f
  • 后台地理围栏 Windows Phone 8.1 (WinRT)

    Issue 我试图在 WP8 1 WinRT 中发生地理围栏事件 进入 退出 时触发后台任务 我已经编写了一个示例应用程序来尝试让它工作 但似乎无法做到这一点 到目前为止 我已采取以下步骤来尝试让地理围栏在后台运行 检查位置功能 创建 注册
  • 如何让 shell_exec 在 IIS 6.0 上运行

    问题 我有一个 PHP 脚本 它使用shell exec运行 pdf 到文本转换器 为了简化问题 我创建了一个简短的脚本 使用shell exec只是回显的输出dir命令 当我在 Apache 服务器上运行它时 一切都按预期运行 当我切换到
  • PSExec 中的会话 ID

    Psexec 无法在远程会话上为我显示记事本 GUI 因此 我尝试获取会话 ID 如下所示 c Users Amitra Downloads PSTools gt PsExec u administrator p force 135 20
  • NSIS获取参数

    to get n 0值作为字符串 不需要选项 传递给安装程序 我不太明白这个函数的工作原理是什么 GetParameters input none output top of stack replaces with e g whatever
  • 自动从 C# 代码进行调试过程并读取寄存器值

    我正在寻找一种方法来读取某个地址的 edx 注册表 就像这个问题中所问的那样 读取eax寄存器 https stackoverflow com questions 16490906 read eax register 虽然我的解决方案需要用

随机推荐

  • 使用Jmeter抓取手机APP报文并进行APP接口测试

    Jmeter是一个比较常用的接口测试工具 xff0c 尤其是接口性能测试 当然它也可以用来测试手机APP的HTTP接口 xff0c 我在Fiddler抓取手机APP报文 和 接口测试代理工具charles mock测试 分别介绍了Fiddl
  • 禅道二次开发技巧

    本文记录一些进行禅道二次开发的技巧 目录 代码调试方法1 xff1a error log方法方法2 xff1a file put contents方法方法3 xff1a a var 方法 禅道扩展技巧1 读取当前用户2 读取当前模块方法名3
  • git merge 和 git rebase 的区别

    Git版本控制中 xff0c git rebase 和 git merge 这两个命令都可以用来集成从一个分支和另一个分支的更改 它们是两种不同的合并方法 xff0c 本文将介绍它们的差异 git rebase 和 git merge 主要
  • SVN项目迁移到Git方法

    本文记录如何将SVN项目迁移到Git xff0c 并保留提交日志信息 目录 Git和SVN差异环境准备Git安装 配置 项目迁移1 将源SVN库转换到Git本地仓库2 添加Git远程库地址3 推送代码到Git 常见错误参考文档 Git和SV
  • Python日志系统logging使用介绍

    日志记录对于软件开发调试和运行都非常重要 Python标准库提供了一个日志记录系统 xff0c 可以很方便的在python项目中添加日志记录 本文将详细介绍如何使用python的 logging 模块来记录日志 目录 基础使用日志级别基本配
  • xrdp连接太多后,连接不上的解决方法

    因为每次都是新建连接 xff0c 端口不断被占用 默认session个数10个 有一个最简单的 xff0c 但是不推荐的办法 xff0c 就是把最大连接数改大 xff0c 比如原来是10 xff0c 就改为100 这种方式治标不治本 xff
  • Python中 os.popen、os.system和subprocess.popen方法介绍

    Python 提供了多种与操作系统交互的方法 xff0c 比如os模块中的popen和system方法 xff0c 此外 xff0c Python subprocess模块中的Popen类也提供了与操作系统交互的方法 xff0c 使用起来更
  • 性能测试工具 IxChariot:Tcl脚本调用方法介绍

    ixChariot是一款功能强大的性能测试软件 xff0c 可用来测试有线和无线性能 xff0c 可以模拟真实应用程序流量 xff0c 并提供关键性能指标 xff0c 包括吞吐量 丢包 抖动 延迟 MOS等 本文简单介绍如何使用IxChar
  • 代码评审平台Gerrit安装配置方法介绍

    Gerrit是一款开源免费的基于 web 的代码审查工具 xff0c 是基于 Git 的版本控制系统 在代码入库之前对开发人员的提交进行审阅 xff0c 检视通过的代码才能提交入库 本文记录如何安装部署gerrit平台 目录 Gerrit简
  • Windows远程执行进程工具psexec和wmiexec介绍

    在自动化测试或者自动化工具开发中 xff0c 通常需要向其它电脑或者服务器发送指令 xff0c 比如Windows发送命令到Linux服务器开启某个服务进程 xff0c 或者读取状态信息 xff0c 我们可以使用ssh协议实现 如果Wind
  • ubuntu下连接小米2

    一 usb连接 xff1a 在Ubuntu挂载使用MTP设备步骤如下 xff1a 1 将MTP设备连接至PC机 2 如果是第一次使用MTP设备需要安装以下软件 xff0c 否则可以跳过此步骤 xff1a sudo apt get insta
  • interp2函数

    interp2 功能 二维数据内插值 格式 1 ZI 61 interp2 X Y Z XI YI X Y是原始数据 xff0c 相当于坐标 xff0c 类似于meshgrid的坐标范围 Z是在上述坐标下的数值 xff0c 也就是在坐标 x
  • RoboMaster视觉教程(0)绪论

    背景 大四毕业了 xff0c 想着大学四年也需要总结一下 就从RoboMaster这个比赛写起吧 我是大二参加的比赛 xff0c 做视觉识别部分 当时的想法很简单 xff0c 因为很喜欢Linux不想焊板子调电控就参加了视觉部分 xff08
  • RoboMaster视觉教程(5)目标位置解算(通过像素点获取转角)

    RoboMaster视觉教程 xff08 5 xff09 目标位置解算 xff08 通过像素点获取转角 xff09 概览直接使用像素坐标的缺陷摄像头标定根据小孔成像原理得到需要的转角角度测量验证 概览 在识别到目标后 xff0c 有一个很重
  • linux shell编程时bad substitution的解决办法

    今天在练习shell编程 xff0c 之前在系统中增加了很多stu 的用户 xff0c 现在想把这些用户名都找出来 xff0c 于是用了下面的几行代码 xff1a find stu users for i in awk F 34 34 39
  • docker安装Rstudio

    下载 xff1a docker pull rocker rstudio 4 0 4 而Rstudio官方提供了带不同R版本的镜像供使用 xff0c 点击https hub docker com r rocker rstudio tags即可
  • Debian下virtualBox增强功能出错的注意事项

    安装好Debian后 xff0c virtualBox下选择安装增强功能 xff1a 在 设备 菜单中选择 安装增强功能 xff0c 桌面上出现一个 VBOXADDITIONS 4 1 6 74713 图标 打开终端 xff0c 切换到ro
  • Seata分布式事务方案--AT(Auto Transaction)模式

    在业务发展初期 xff0c 一块大饼 的单业务系统架构 xff0c 能满足基本的业务需求 但是随着业务的快速发展 xff0c 系统的访问量和业务复杂程度都在快速增长 xff0c 单系统架构逐渐成为业务发展瓶颈 xff0c 解决业务系统的高耦
  • 使用maven构建jar包并拷贝到指定目录

    小记 xff1a 主要是为了迎合公司微服务项目 xff0c 同时是对已有技术的实践整理 使用spring boot maven plugin构建构建jar包 xff1b 使用maven surefire plugin跳过测试类 xff1b
  • mfc的CTreeCtrl控件实现windows的资源管理器

    BOOL Cwp8MtpTestDlg OnInitDialog CDialog OnInitDialog 设置目录树样式 DWORD dwStyle 61 GetWindowLong m pcTreeCtrl m hWnd GWL STY