服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - Vc++ 控件List Control用法总结

Vc++ 控件List Control用法总结

2021-02-27 15:14C++教程网 C/C++

这篇文章主要介绍了Vc++ 控件List Control用法总结的相关资料,需要的朋友可以参考下

1.新建对话框MFC,在对话框上放一个ListCtrl

ID:IDC_PATH

View:Report

Vc++ 控件List Control用法总结

2.为ListCtrl添加变量

右击->添加变量m_wndPath

Vc++ 控件List Control用法总结

3.找到OnInitDialog()函数添加如下代码:

// TODO: 在此添加额外的初始化代码

m_wndPath.DeleteAllItems();//清空
m_wndPath.InsertColumn(0,_T("项目"));//添加列
m_wndPath.InsertColumn(1,_T("所在路径"));
m_wndPath.SetColumnWidth(0, 150);//设置列宽
m_wndPath.SetColumnWidth(1, 350);
m_wndPath.SetRedraw(FALSE);//防止重绘

int nIndex;
//char|TCHAR项目属性->字符集:使用多字节字符集
TCHAR Path[MAX_PATH+1];//TCHAR取代char MAX_PATH最长路径
nIndex=m_wndPath.InsertItem( 0,_T("Windows目录") );
if( nIndex < 0 ) return TRUE;
GetWindowsDirectory(Path,MAX_PATH);//取得windows目录
m_wndPath.SetItemText( nIndex, 1, Path );

LPITEMIDLIST pidl;//桌面CSIDL_DESKTOPDIRECTORY
//用来得到系统的某些特定文件夹的位置信息
if(SUCCEEDED(SHGetSpecialFolderLocation(NULL,CSIDL_DESKTOPDIRECTORY,&pidl)))
{
  if(SHGetPathFromIDList(pidl, Path))//功能是把项目标志符列表转换为文档系统路径
  {
    nIndex=m_wndPath.InsertItem( 0,_T("桌面"));//成功则返回0
    if( nIndex < 0 )
    {
      return TRUE;
    }
    m_wndPath.SetItemText( nIndex, 1, Path );
  }
}

m_wndPath.SetRedraw(TRUE);//显示

return TRUE; // 除非将焦点设置到控件,否则返回 TRUE

Vc++ 控件List Control用法总结

4.char被TCHAR取代,若要用则:

项目属性->字符集:使用多字节字符集

Vc++ 控件List Control用法总结

参考代码:

m_wndPath.DeleteAllItems();
m_wndPath.InsertColumn(0,"项目");
m_wndPath.InsertColumn(1,"所在路径");
m_wndPath.SetColumnWidth(0, 150);
m_wndPath.SetColumnWidth(1, 350);
m_wndPath.SetRedraw(FALSE);

int nIndex;
const int nFolder[]={ CSIDL_ALTSTARTUP,CSIDL_APPDATA,CSIDL_BITBUCKET,CSIDL_COMMON_ALTSTARTUP,
  CSIDL_COMMON_DESKTOPDIRECTORY,CSIDL_COMMON_FAVORITES,CSIDL_COMMON_PROGRAMS,
  CSIDL_COMMON_STARTMENU,CSIDL_COMMON_STARTUP,CSIDL_CONTROLS,CSIDL_COOKIES,
  CSIDL_DESKTOP,CSIDL_DESKTOPDIRECTORY,CSIDL_DRIVES,CSIDL_FAVORITES,CSIDL_FONTS,
  CSIDL_HISTORY,CSIDL_INTERNET,CSIDL_INTERNET_CACHE,CSIDL_NETHOOD,CSIDL_NETWORK,
  CSIDL_PERSONAL,CSIDL_PRINTERS,CSIDL_PRINTHOOD,CSIDL_PROGRAMS,CSIDL_RECENT,
  CSIDL_SENDTO,CSIDL_STARTMENU,CSIDL_STARTUP,CSIDL_TEMPLATES };
const CString strFolderName[]={ "CSIDL_ALTSTARTUP","CSIDL_APPDATA","回收站","CSIDL_COMMON_ALTSTARTUP",
  "CSIDL_COMMON_DESKTOPDIRECTORY","CSIDL_COMMON_FAVORITES","CSIDL_COMMON_PROGRAMS",
  "CSIDL_COMMON_STARTMENU","CSIDL_COMMON_STARTUP","控制面板","CSIDL_COOKIES",
  "CSIDL_DESKTOP","桌面","我的电脑","收藏夹","字体",
  "历史纪录","CSIDL_INTERNET","CSIDL_INTERNET_CACHE","网上邻居","CSIDL_NETWORK",
  "我的文档","打印机","CSIDL_PRINTHOOD","程序组","最近打开的文档",
  "发送","任务条启动菜单目录","启动目录","临时文档" };

char Path[MAX_PATH+1];
nIndex=m_wndPath.InsertItem( 0,"Windows目录" );
if( nIndex < 0 ) return TRUE;
GetWindowsDirectory(Path,MAX_PATH);
m_wndPath.SetItemText( nIndex, 1, Path );

nIndex=m_wndPath.InsertItem( 0,"System目录" );
if( nIndex < 0 ) return TRUE;
GetSystemDirectory(Path,MAX_PATH);
m_wndPath.SetItemText( nIndex, 1, Path );

int i,count=sizeof(nFolder)/sizeof(int);
for(i=0;i<count;i++)
{
  LPITEMIDLIST pidl;
  LPMALLOC pShellMalloc;

  if(SUCCEEDED(SHGetMalloc(&pShellMalloc)))
  {
    if(SUCCEEDED(SHGetSpecialFolderLocation(NULL,
      nFolder[i],&pidl)))
    {
      if(SHGetPathFromIDList(pidl, Path))
      {
        nIndex=m_wndPath.InsertItem( 0,strFolderName[i] );
        if( nIndex < 0 )
        {
          pShellMalloc->Free(pidl);
          pShellMalloc->Release();
          return TRUE;
        }
        m_wndPath.SetItemText( nIndex, 1, Path );
      }
      pShellMalloc->Free(pidl);
    }
    pShellMalloc->Release();
  }
}
m_wndPath.SetRedraw(TRUE);

以上所述就是本文的全部内容了,希望大家能够喜欢。

延伸 · 阅读

精彩推荐
  • C/C++OpenCV实现拼接图像的简单方法

    OpenCV实现拼接图像的简单方法

    这篇文章主要为大家详细介绍了OpenCV实现拼接图像的简单方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    iteye_183805102021-07-29
  • C/C++使用C++制作简单的web服务器(续)

    使用C++制作简单的web服务器(续)

    本文承接上文《使用C++制作简单的web服务器》,把web服务器做的功能稍微强大些,主要增加的功能是从文件中读取网页并返回给客户端,而不是把网页代码...

    C++教程网5492021-02-22
  • C/C++深入C++拷贝构造函数的总结详解

    深入C++拷贝构造函数的总结详解

    本篇文章是对C++中拷贝构造函数进行了总结与介绍。需要的朋友参考下...

    C++教程网5182020-11-30
  • C/C++关于C语言中E-R图的详解

    关于C语言中E-R图的详解

    今天小编就为大家分享一篇关于关于C语言中E-R图的详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看...

    Struggler095962021-07-12
  • C/C++c/c++实现获取域名的IP地址

    c/c++实现获取域名的IP地址

    本文给大家汇总介绍了使用c/c++实现获取域名的IP地址的几种方法以及这些方法的核心函数gethostbyname的详细用法,非常的实用,有需要的小伙伴可以参考下...

    C++教程网10262021-03-16
  • C/C++C语言main函数的三种形式实例详解

    C语言main函数的三种形式实例详解

    这篇文章主要介绍了 C语言main函数的三种形式实例详解的相关资料,需要的朋友可以参考下...

    ieearth6912021-05-16
  • C/C++c/c++内存分配大小实例讲解

    c/c++内存分配大小实例讲解

    在本篇文章里小编给大家整理了一篇关于c/c++内存分配大小实例讲解内容,有需要的朋友们可以跟着学习参考下。...

    jihite5172022-02-22
  • C/C++C语言实现双人五子棋游戏

    C语言实现双人五子棋游戏

    这篇文章主要为大家详细介绍了C语言实现双人五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    两片空白7312021-11-12