下面的代码演示了如何得到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 多选文件名 动态分配缓冲区”的核心知识点。理解并正确应用这些概念,可以帮助开发者构建更健壮、更灵活的文件选择功能。在压缩包文件`csdn_GetOpenMultiFile`中,可能包含了实现这一...
`QFileDialog`提供了丰富的功能,如选择文件、文件夹、多选文件以及保存文件等。本篇文章将深入探讨如何使用Python3.x和`QFileDialog`来实现这些功能。 首先,让我们了解`QFileDialog`的基本用法。在Python中,你...
为了处理这种情况,你需要确保`nMaxFile`的值足够大,可以容纳用户可能选择的所有文件名。 解决这个问题的一种方法是动态调整`lpstrFile`缓冲区的大小。你可以通过设置`m_ofn.nMaxFile`来增大缓冲区的大小,确保它...
在更复杂的情况下,可以创建一个注册表项,使自定义的Shell扩展与资源管理器集成。这使得当用户在资源管理器中选择文件后,可以触发自定义的操作,比如读取选中文件的名称。这涉及到注册表编程和实现COM组件。 4. ...
它的参数包括对话框的初始目录、过滤器(用于定义显示的文件类型)、预选文件名等,可以设置成只读、多选模式。 2. `GetSaveFileName`函数则用于创建一个文件保存对话框,让用户选择保存文件的位置并输入文件名。...
`GetPathName`函数用于获取用户选择的第一个文件的完整路径,而`GetFileNames`则用于获取所有选择的文件名,这些文件名通常是以分隔符(通常是NULL或逗号)连接的字符串。 在上述代码中,`DecodeString`可能指的是...
在成功的情况下,`OpenFileName`结构的`lpstrFile`字段将包含用户选择的文件路径。 以下是一个完整的示例代码: ```cpp #include #include int main() { char szFileName[MAX_PATH] = {0}; OPENFILENAME ...
在源代码文件`source.c`中,开发者将创建并初始化`OPENFILENAME`结构,然后调用`GetOpenFileName`或`GetSaveFileName`函数来显示对话框并获取用户的选择。`resource.h`可能包含了对话框资源的定义,而`wav.rc`则包含...
在Windows API中,这个功能可以通过调用`GetOpenFileName`函数来实现,该函数允许设置对话框的各种参数,如文件过滤器、默认目录等,并且支持多选模式。开发者也可以使用.NET Framework中的`OpenFileDialog`类,这是...
15. 另外,还提供了一个不同的宏`CombineWorkbooks`,它使用`GetOpenFilename`函数让用户选择要合并的工作簿,支持多选,并且可以处理`.xls`和`.xlsx`格式的文件。 这个宏的适用场景广泛,比如处理会计数据、分析...
01048利用GetOpenFilename方法获取某类型文件名 01049改变GetOpenFilename方法的默认路径 01050改变GetOpenFilename方法的标题文字 01051使用GetOpenFilename方法时出现错误的处理 01052利用GetSaveAsFilename方法...