zoukankan      html  css  js  c++  java
  • Vc++ 控件用法总结之List Control

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

    ID:IDC_PATH

    View:Report

    2.为ListCtrl添加变量

    右击->添加变量m_wndPath

    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

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

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

    参考代码:

    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);
  • 相关阅读:
    A1042 Shuffling Machine (20)
    【SSM 4】Mybatis逆向生成工具
    【SSM 4】Mybatis逆向生成工具
    【SSM 3】Mybatis应用,和Hibernate的区别
    【SSM 3】Mybatis应用,和Hibernate的区别
    【SSM 2】spring常用注解
    【SSM 2】spring常用注解
    【SSM 1】SpringMVC、Spring和Struts的区别
    【SSM 1】SpringMVC、Spring和Struts的区别
    【java基础 5】树形结构数据加载的思考
  • 原文地址:https://www.cnblogs.com/lujin49/p/4556851.html
Copyright © 2011-2022 走看看