VC++开发GIS系统(102)查看文件属性

在文章《VC++开发GIS系统(101)补充知识VC++获取文件信息(大小、时间)》中大体介绍了VC++中获取文件属性的简单方法,下面的工作就是响应文件右击的属性菜单,实现查看文件属性的功能。

效果图

实现步骤

1. 画一个文件属性的对话框

参考文章《VC++开发GIS系统(40)画一个输入点的对话框

这里要注意的是将控制Edit的属性设置为只读,这样用户就无法修改属性了,如下:

2. 导出对话框

参考文章《VC++开发GIS系统(45)导出输入点对话框并调用

实现代码如下:

函数定义

/*
* 文件属性对话框
*/
void maladialogsdll dlgGraphFilePro(malaTree fileNode);

函数实现

/*
* 文件属性对话框实现
*/
void maladialogsdll dlgGraphFilePro(malaTree fileNode)
{
    CDialogFilePro dlg;
    dlg.mFileName = fileNode.itemnode;
    dlg.mFilePath = fileNode.filePath;
    
    CFile file;
    CFileStatus fileStatus;
    file.GetStatus(fileNode.filePath, fileStatus);
    
    dlg.mFileSize.Format(L"%f KB", (float)fileStatus.m_size/1024.0);
    dlg.mCreateTime = fileStatus.m_ctime.Format(L"%Y-%m-%d %H:%M:%S");
    dlg.mModifyTime = fileStatus.m_mtime.Format(L"%Y-%m-%d %H:%M:%S");

    dlg.DoModal();
}

这里要传入的是一个节点malaTree fileNode,然后根据节点来获取文件信息。

3. 响应属性菜单

参考《VC++开发GIS系统(71)响应CTreeCtrl右键菜单的函数》响应“属性”菜单,如图:

代码如下:

//查看文件属性
void CPrjManage::OnGraphFilePro()
{
    //更新fileNodeTree
    CString str = m_wndPrjView.GetItemText(selTreeItem);
    for (size_t i = 0; i < fileNodeTree.size(); i++)
    {
        if (fileNodeTree[i].itemnode == str)
        {
            dlgGraphFilePro(fileNodeTree[i]);
        }
    }
    
}

详细代码可以参考:GitHub

VC++开发GIS系统(101)补充知识VC++获取文件信息(大小、时间) VC++开发GIS系统(103)载入文件之对话框的导出

作者:,GIS爱好者。
分享本文,请您带上本文链接
分享到:

发表评论