文件名和目录

【勇芳软件工作室】汉化HomePreviousNext

本节中的信息适用于资源管理器风格和旧式打开和另存为对话框。

在调用GetOpenFileNameGetSaveFileName函数之前,OPENFILENAME结构的lpstrFile成员必须指向缓冲区才能接收文件名。nMaxFile成员必须指定lpstrFile缓冲区的大小(以字节为单位)(ANSI版本)或字符(Unicode版本)。

如果用户指定文件名并单击确定按钮,该对话框将将所选的驱动器,目录和文件名复制到lpstrFile缓冲区。该函数还会将nFileOffsetnFileExtension成员分别设置为从缓冲区开始到文件名和文件扩展名的偏移量(以字节或字符为单位)。

要仅检索文件名和扩展名,请将lpstrFileTitle成员设置为指向缓冲区,并将nMaxFileTitle成员设置为缓冲区的大小(以字节为单位(ANSI版本)或字符(Unicode版本))。或者,您可以在GetFileTitle函数的调用中传递lpstrFile缓冲区,以获取所选文件的显示名称。但请注意,GetFileTitle返回的文件名仅在用户显示文件名的偏好时才包含扩展名。

该对话框将使用当前目录作为调用进程作为显示文件和目录的初始目录。使用GetCurrentDirectorySetCurrentDirectory函数来获取或更改当前目录。要在不更改当前目录的情况下指定不同的初始目录,请使用lpstrInitialDir成员指定目录的名称。当用户选择不同的驱动器或目录时,该对话框将自动更改当前目录。要防止对话框更改当前目录,请设置OFN_NOCHANGEDIR标志。此标志不会阻止用户更改目录以查找文件。

要指定默认的文件扩展名,请使用lpstrDefExt成员。如果用户指定了没有扩展名的文件名,则对话框将添加默认扩展名。如果指定了默认扩展名,并且用户指定了具有不同扩展名的文件名,对话框将设置OFN_EXTENSIONDIFFERENT标志。

要让用户从目录中选择多个文件,请设置OFN_ALLOWMULTISELECT标志。为了与旧版应用程序兼容,默认多选对话框使用旧式用户界面。要显示资源管理器风格的多选项对话框,还必须设置OFN_EXPLORER标志。

如果用户选择多个文件,则lpstrFile成员指向的缓冲区将返回到当前目录的路径,然后是所选文件的文件名。nFileOffset成员是第一个文件名的偏移量,不使用nFileExtension成员。下表描述了返回多个文件名的资源管理器样式和旧样式对话框之间的区别。

对话框风格描述
资源管理器样式对话框目录和文件名字符串为NULL分隔,在最后一个文件名后面加上一个额外的NULL字符。这种格式使资源管理器样式的对话框返回包含空格的长文件名。
旧式对话框目录和文件名字符串用空格分隔。对于具有空格的文件名,该函数使用短文件名。

您可以使用FindFirstFile函数在长和短文件名之间进行转换。