CListCtrl 使用

本文介绍如何在Windows应用程序中使用OnInitDialog进行初始化设置,包括设置列表视图的字体、列标题及样式,并实现文件选择、添加、删除等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初始化 在 OnInitDialog中

    //设置字体,以免出现乱码
    ListFont.CreateFont(0, 0, 0, 0, FW_NORMAL, 0, 0, 0, DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Fixedsys");  
    FileNameList.SetFont(&ListFont);


    FileNameList.InsertColumn(0, _T("No"), LVCFMT_LEFT, 34);
    FileNameList.InsertColumn(1, _T("Size"), LVCFMT_LEFT, 68);
    FileNameList.InsertColumn(2, _T("Name"), LVCFMT_LEFT, 180);

    //比较平的滚动条
    FileNameList.SetExtendedStyle(FileNameList.GetExtendedStyle() | LVS_EX_FLATSB);
    //选中一整行: 
    FileNameList.SetExtendedStyle(FileNameList.GetExtendedStyle() | LVS_EX_FULLROWSELECT);
    //绘制表格
    // FileNameList.SetExtendedStyle(FileNameList.GetExtendedStyle() | LVS_EX_GRIDLINES);  
    //带复选框:  
    FileNameList.SetExtendedStyle(FileNameList.GetExtendedStyle() | LVS_EX_CHECKBOXES);  
    //自动切换
    //FileNameList.SetExtendedStyle(FileNameList.GetExtendedStyle() | LVS_EX_TRACKSELECT);

 

 

 

事件处理函数

 

 

    void CS320Dlg::OnBtnAddFile()
{
    int nCount = FileNameList.GetItemCount();
    int;
    CFile file;

    CString Name, tmp;
    CFileDialog dlg(TRUE, NULL, NULL, OFN_ALLOWMULTISELECT, NULL, NULL);
    dlg.m_ofn.nMaxFile = 100 * MAX_PATH;        //文件路径和文件名存储缓冲
    char* pc = new char[100 * MAX_PATH];
    dlg.m_ofn.lpstrFile = pc;
    dlg.m_ofn.lpstrFile[0] = NULL;

    int iReturn = dlg.DoModal();
    if( iReturn == IDOK )
    {
        POSITION pos = dlg.GetStartPosition();
        while( pos != NULL )
        {
            Name = dlg.GetNextPathName(pos);

            tmp.Format("%d", nCount + selected + 1);
            FileNameList.InsertItem(nCount + selected, tmp);                            //写第一列

            file.Open(Name, CFile::modeRead);
            tmp.Format("%.2fK", (float) (file.GetLength()) / 1024);
            file.Close();

            FileNameList.SetItemText(nCount + selected, 1, tmp);                       //第三列;
            FileNameList.SetItemText(nCount + selected, 2, Name);   //第二列
            selected++;
        }
        tmp.Format("Selected files:%d/r/n", selected);
        DownloadInfo += tmp;
    }

    if( CommDlgExtendedError() == FNERR_BUFFERTOOSMALL )
    {
        tmp.Format("Selected files are too large!");
        DownloadInfo += tmp;
    }
    delete[]pc;


    FileNameList.EnsureVisible(FileNameList.GetItemCount() - 1, TRUE);   //自动滚动
    UpdateData(false);
}

void CS320Dlg::OnBtnDelFile()
{
    CString str;
    int i = FileNameList.GetItemCount();
    for( ;i >= 0;i-- )
    {
        if( FileNameList.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED || FileNameList.GetCheck(i) )
            FileNameList.DeleteItem(i);
    }
    for( i = FileNameList.GetItemCount();i >= 0;i-- )//更新序号
    {
        str.Format("%d", i + 1);
        FileNameList.SetItemText(i, 0, str);                       //第三列;
    }
}

void CS320Dlg::OnBtnDelAllFile()
{
    while( FileNameList.DeleteItem(0) );//删除了第一列后,后面的列会依次向上移动。
}

    UpdateData(false);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值