MFC-ClistCtl报表格式的使用

知识点:
CListCtrl报表格式
CListCtrl报表格式添加列
CListCtrl报表格式添加行
CListCtrl报表格式设置单元格

一、CListCtrl报表格式
类名:SysListView32
属性
view:report;
二、CListCtrl报表格式添加列
int InsertColumn(intnCol,LPCTSTR lpszColumnHeading,int nFormat=LVCFMT_LEFT,in nWidth=-1,int nSubItem=-1);
BOOL SetColumnWidth( int nCol, int cx );

三、CListCtrl报表格式添加行
BOOL InsertItem( int nItem, LPCTSTR lpszItem, int nImage );

四、CListCtrl报表格式设置单元格文本
CListCtrl::SetItemText //GetItemText
BOOL SetItemText( int nItem//, int nSubItem//, LPTSTR lpszText );

五、SHGetFileInfo 获取文件类型
SHGFI_TYPENAME
SHGFI_DISPLAYNAME

六、设置扩展样式
CTabCtrl::SetExtendedStyle
plst_ctl->SetExtendedStyle(LVS_EX_FULLROWSELECT);
——————————
这个是窗口设计图,在属性框里将View换为Report

窗口设计
设计好的页面
这里写图片描述
相关代码

// Dialog_ListCtrl_Test.cpp : 实现文件
//

#include "stdafx.h"
#include "MyWindow.h"
#include "Dialog_ListCtrl_Test.h"


// CDialog_ListCtrl_Test 对话框

IMPLEMENT_DYNAMIC(CDialog_ListCtrl_Test, CDialog)

CDialog_ListCtrl_Test::CDialog_ListCtrl_Test(CWnd* pParent /*=NULL*/)
    : CDialog(CDialog_ListCtrl_Test::IDD, pParent)
    , FileDir(_T(""))
{

}

CDialog_ListCtrl_Test::~CDialog_ListCtrl_Test()
{
}

void CDialog_ListCtrl_Test::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
}


BEGIN_MESSAGE_MAP(CDialog_ListCtrl_Test, CDialog)
    ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, &CDialog_ListCtrl_Test::OnLvnItemchangedList1)
    ON_BN_CLICKED(IDC_BUTTON1, &CDialog_ListCtrl_Test::OnBnClickedButton1)
    ON_NOTIFY(NM_DBLCLK, IDC_LIST1, &CDialog_ListCtrl_Test::OnNMDblclkList1)
END_MESSAGE_MAP()


// CDialog_ListCtrl_Test 消息处理程序

int CDialog_ListCtrl_Test::OnInitDialog(void)
{
    //添加项目
    CListCtrl* plst_ctl=(CListCtrl*)GetDlgItem(IDC_LIST1);
    //添加图标
    m_imagelist_b.Create(32, 32, ILC_COLOR32 | ILC_MASK, 0, 0);
    m_imagelist_s.Create(16, 16, ILC_COLOR32 | ILC_MASK, 0, 0);
    plst_ctl->SetImageList(&m_imagelist_b, LVSIL_NORMAL); //大图标
    plst_ctl->SetImageList(&m_imagelist_s, LVSIL_SMALL);    //小图标
    plst_ctl->SetExtendedStyle(LVS_EX_FULLROWSELECT);

    /*plst_ctl->InsertItem(0,L"0000",0);
    plst_ctl->InsertItem(1,L"1111",0);
    plst_ctl->InsertItem(2,L"2222");
    plst_ctl->InsertItem(3,L"aaaaa");
    plst_ctl->SetItemText(3,0,L"33333");*/
    //添加列 文件名 文件类型
    plst_ctl->InsertColumn(0, L"文件名", 0, 55);
    plst_ctl->InsertColumn(1, L"文件类型", 0, 88);
    plst_ctl->SetColumnWidth(0, 150);
    plst_ctl->SetColumnWidth(1, 100);
    CFileFind findfile;
    int nfound = findfile.FindFile(L"C:\\windows\\//*.*");
    int i = 0;
    while(nfound) //遍历文件
    {
        nfound = findfile.FindNextFile();
        if (findfile.IsDirectory())
        {
            continue;
        }
        SHFILEINFO finfo;
        //获取文件信息,主要图标icon
        SHGetFileInfo(findfile.GetFilePath(),0,&finfo,sizeof(finfo),SHGFI_ICON|SHGFI_TYPENAME);
        //添加文件项目和图标
        m_imagelist_b.Add(finfo.hIcon);
        m_imagelist_s.Add(finfo.hIcon);
        plst_ctl->InsertItem(i, findfile.GetFileName(), m_imagelist_b.Add(finfo.hIcon));
        /*plst_ctl->SetItemText(0, 1, L"文件类型");
        plst_ctl->SetItemText(1, 1, L"文件类型");*/
        plst_ctl->SetItemText(i++, 1, finfo.szTypeName);

    }
    FileDir = findfile.GetRoot(); //获取文件目录路径
    findfile.Close();//释放资源
    return 0;
}


void CDialog_ListCtrl_Test::OnLvnItemchangedList1(NMHDR *pNMHDR, LRESULT *pResult)
{
    LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
    // TODO: 在此添加控件通知处理程序代码
    *pResult = 0;
}


void CDialog_ListCtrl_Test::OnBnClickedButton1()
{
    // TODO: 在此添加控件通知处理程序代码
    ShellExecuteW(0, L"open", L"C:\\1.txt", NULL,NULL, SW_SHOWNORMAL);
}


void CDialog_ListCtrl_Test::OnNMDblclkList1(NMHDR *pNMHDR, LRESULT *pResult)
{
    LPNMITEMACTIVATE pNMItemActivate = (LPNMITEMACTIVATE)(pNMHDR);
    // TODO: 在此添加控件通知处理程序代码
    //获取文件目录路径及文件
    CListCtrl* plst_ctl = (CListCtrl*)GetDlgItem(IDC_LIST1);
    //获取ListCtrl选中项的位置
    POSITION pos = plst_ctl->GetFirstSelectedItemPosition();
    if (pos)
    {
        int item_index = plst_ctl->GetNextSelectedItem(pos);
        //获取选中图标的文件名
        CString filename = plst_ctl->GetItemText(item_index, 0);
        filename = FileDir + filename;
        TRACE("%ws \n", filename);
        ShellExecuteW(0, NULL, filename, NULL, NULL, SW_SHOWNORMAL);
    }
    *pResult = 0;
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值