zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    NBUT 1120 Reimu's Teleport (线段树)
    NBUT 1119 Patchouli's Books (STL应用)
    NBUT 1118 Marisa's Affair (排序统计,水)
    NBUT 1117 Kotiya's Incantation(字符输入处理)
    NBUT 1115 Cirno's Trick (水)
    NBUT 1114 Alice's Puppets(排序统计,水)
    188 Best Time to Buy and Sell Stock IV 买卖股票的最佳时机 IV
    187 Repeated DNA Sequences 重复的DNA序列
    179 Largest Number 把数组排成最大的数
    174 Dungeon Game 地下城游戏
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4037174.html
Copyright © 2011-2022 走看看