`
qxhzzz
  • 浏览: 3085 次
  • 性别: Icon_minigender_1
  • 来自: 西安
最近访客 更多访客>>
社区版块
存档分类
最新评论

GetOpenFileName多选的情况下选择的文件名[转]

 
阅读更多
下面的代码演示了如何得到GetOpenFileName允许多选的情况下选择的文件名
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
OPENFILENAME ofn;
TCHAR szOpenFileNames[80*MAX_PATH];
TCHAR szPath[MAX_PATH];
TCHAR szFileName[80*MAX_PATH];
TCHAR* p;
int nLen = 0;
ZeroMemory( &ofn, sizeof(ofn) );
ofn.Flags = OFN_EXPLORER | OFN_ALLOWMULTISELECT;
ofn.lStructSize = sizeof(ofn);
ofn.lpstrFile = szOpenFileNames;
ofn.nMaxFile = sizeof(szOpenFileNames);
ofn.lpstrFile[0] = '\0';
ofn.lpstrFilter = TEXT("All Files(*.*)\0*.*\0");
if( GetOpenFileName( &ofn ) )

  //把第一个文件名前的复制到 szPath,即:
  //如果只选了一个文件,就复制到最后一个'\'
  //如果选了多个文件,就复制到第一个NULL字符
  lstrcpyn(szPath, szOpenFileNames, ofn.nFileOffset );
  //当只选了一个文件时,下面这个NULL字符是必需的.
  // 这里不区别对待选了一个和多个文件的情况
  szPath[ ofn.nFileOffset ] = '\0';
  nLen = lstrlen(szPath);
 
  if( szPath[nLen-1] != '\\' )   //如果选了多个文件,则必须加上'\\'
  {
   lstrcat(szPath, TEXT("\\"));
  }
 
  p = szOpenFileNames + ofn.nFileOffset; //把指针移到第一个文件
 
  ZeroMemory(szFileName, sizeof(szFileName));
  while( *p )
  {  
   lstrcat(szFileName, szPath);  //给文件名加上路径 
   lstrcat(szFileName, p);    //加上文件名 
   lstrcat(szFileName, TEXT("\n")); //换行  
   p += lstrlen(p) +1;     //移至下一个文件
  }
  MessageBox(NULL, szFileName, TEXT("MultiSelect"), MB_OK);
}
}
分享到:
评论

相关推荐

    GetOpenFileName 多选文件名 动态分配缓冲区

    这就是关于“GetOpenFileName 多选文件名 动态分配缓冲区”的核心知识点。理解并正确应用这些概念,可以帮助开发者构建更健壮、更灵活的文件选择功能。在压缩包文件`csdn_GetOpenMultiFile`中,可能包含了实现这一...

    Python3.x+QFileDialog 实现界面功能“选择文件夹”、“选择文件”、“选择多个文件”和“保存文件”

    `QFileDialog`提供了丰富的功能,如选择文件、文件夹、多选文件以及保存文件等。本篇文章将深入探讨如何使用Python3.x和`QFileDialog`来实现这些功能。 首先,让我们了解`QFileDialog`的基本用法。在Python中,你...

    CFileDialog设置多选的问题解决

    为了处理这种情况,你需要确保`nMaxFile`的值足够大,可以容纳用户可能选择的所有文件名。 解决这个问题的一种方法是动态调整`lpstrFile`缓冲区的大小。你可以通过设置`m_ofn.nMaxFile`来增大缓冲区的大小,确保它...

    完整版取资源管理器选中文件名.rar

    在更复杂的情况下,可以创建一个注册表项,使自定义的Shell扩展与资源管理器集成。这使得当用户在资源管理器中选择文件后,可以触发自定义的操作,比如读取选中文件的名称。这涉及到注册表编程和实现COM组件。 4. ...

    c/C++文件(夹)选择对话框

    它的参数包括对话框的初始目录、过滤器(用于定义显示的文件类型)、预选文件名等,可以设置成只读、多选模式。 2. `GetSaveFileName`函数则用于创建一个文件保存对话框,让用户选择保存文件的位置并输入文件名。...

    打开文件对话框获取多个文件地址

    `GetPathName`函数用于获取用户选择的第一个文件的完整路径,而`GetFileNames`则用于获取所有选择的文件名,这些文件名通常是以分隔符(通常是NULL或逗号)连接的字符串。 在上述代码中,`DecodeString`可能指的是...

    C++采用openfilename打开文件对话框用法实例

    在成功的情况下,`OpenFileName`结构的`lpstrFile`字段将包含用户选择的文件路径。 以下是一个完整的示例代码: ```cpp #include #include int main() { char szFileName[MAX_PATH] = {0}; OPENFILENAME ...

    wav.zip_OPENFILENAME

    在源代码文件`source.c`中,开发者将创建并初始化`OPENFILENAME`结构,然后调用`GetOpenFileName`或`GetSaveFileName`函数来显示对话框并获取用户的选择。`resource.h`可能包含了对话框资源的定义,而`wav.rc`则包含...

    公用对话框打开多个文件控件(49KB)

    在Windows API中,这个功能可以通过调用`GetOpenFileName`函数来实现,该函数允许设置对话框的各种参数,如文件过滤器、默认目录等,并且支持多选模式。开发者也可以使用.NET Framework中的`OpenFileDialog`类,这是...

    有用的EXCEL中VBA代码.pdf

    15. 另外,还提供了一个不同的宏`CombineWorkbooks`,它使用`GetOpenFilename`函数让用户选择要合并的工作簿,支持多选,并且可以处理`.xls`和`.xlsx`格式的文件。 这个宏的适用场景广泛,比如处理会计数据、分析...

    Excel VBA实用技巧大全 附书源码

    01048利用GetOpenFilename方法获取某类型文件名 01049改变GetOpenFilename方法的默认路径 01050改变GetOpenFilename方法的标题文字 01051使用GetOpenFilename方法时出现错误的处理 01052利用GetSaveAsFilename方法...

Global site tag (gtag.js) - Google Analytics