• CFileDialog的使用方法简单介绍


    CFileDialog文件选择对话框的使用:首先构造一个对象并提供对应的參数,构造函数原型例如以下:
    CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL );參数意义例如以下:

    bOpenFileDialog 为TRUE则显示打开对话框,为FALSE则显示保存对话文件对话框。
    lpszDefExt 指定默认的文件扩展名。
    lpszFileName 指定默认的文件名称。
    dwFlags 指明一些特定风格。
    lpszFilter 是最重要的一个參数,它指明可供选择的文件类型和对应的扩展名。參数格式如:
    "Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||";文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间能够用 ; 切割,每种文件类型间用 | 分隔,末尾用 || 指明。
    pParentWnd 为父窗体指针。
    CString CFileDialog::GetPathName( ) 得到完整的文件名称,包含文件夹名和扩展名如:c:/test/test1.txt
    CString CFileDialog::GetFileName( ) 得到完整的文件名称,如:test1
    CString CFileDialog::GetExtName( ) 得到完整的文件扩展名,如:txt
    CString CFileDialog::GetFileTitle ( ) 得到完整的文件名称,包含文件夹名和扩展名如:test1.txt
    POSITION CFileDialog::GetStartPosition( ) 对于选择了多个文件的情况得到第一个文件位置。
    CString CFileDialog::GetNextPathName( POSITION& pos ) 对于选择了多个文件的情况得到下一个文件位置,并同一时候返回当前文件名称。但必须已经调用过POSITION CFileDialog::GetStartPosition( )来得到最初的POSITION变量。
    VC++ CFileDialog 读取多个文件
    CFileDialog dlg(TRUE,
        "DEM Files (*DEM)",
        NULL,
        OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT |OFN_ALLOWMULTISELECT|OFN_ENABLESIZING,
        _T("Layer Files (*.DEM;*.TIFF;*.BMP;*.JPG)|*.DEM;*.TIFF;*.BMP;*.JPG;)||"),
        NULL);
    dlg.m_ofn.lpstrTitle="请载入相关图层";
    //最多能够打开100个文件
    dlg.m_ofn.nMaxFile = 100 * MAX_PATH;
    dlg.m_ofn.lpstrFile = new TCHAR[dlg.m_ofn.nMaxFile]; 
    ZeroMemory(dlg.m_ofn.lpstrFile, sizeof(TCHAR) * dlg.m_ofn.nMaxFile);

    //显示文件对话框,获得文件名称集合
    int retval = dlg.DoModal();
    if(retval==IDCANCEL)
    return false;
    POSITION pos_file;
    pos_file = dlg.GetStartPosition();
    CArray<CString, CString> ary_filename;
        while(pos_file != NULL)
    ary_filename.Add(dlg.GetNextPathName(pos_file));

    //依据扩展名读取相关文件
    for(int i=0; i<ary_filename.GetSize(); i++)
    {
    CString str_ext;
    str_ext = ary_filename.GetAt(i).Right(3);
    if((str_ext == "DEM")||(str_ext == "dem"))
    {
    }
    else if((str_ext == "TIFF")||(str_ext == "tiff"))
    {
    }
    else if((str_ext == "BMP")||(str_ext == "bmp"))
    {
    }
    else if((str_ext == "JPG")||(str_ext == "jpg"))
    {
    }
    else if((str_ext == "SHP")||(str_ext == "shp"))
    {
    }
    }
    return true
  • 相关阅读:
    mysql 单表查询
    socket 阻塞,同步、I/O模型
    I/O复用
    send函数和recv函数
    linux网络编程、系统编程
    TCP三次握手、四次挥手
    支持中文的PHP按字符串长度分割成数组代码
    php json_encode 处理中文
    php base64各种上传
    本地创建分支
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4094591.html
Copyright © 2020-2023  润新知