5 文件操作.ppt
文本预览下载声明
SHFILEOPSTRUCT结构的定义:? typedef struct _SHFILEOPSTRUCT{ HWND hwnd; UINT wFunc; LPCSTR pFrom; LPCSTR pTo; FILEOP_FLAGS fFlags; BOOL fAnyOperationsAborted; LPVOID hNameMappings; LPCSTR lpszProgressTitle; } SHFILEOPSTRUCT, FAR *LPSHFILEOPSTRUCT; 成员hwnd :用于显示文件操作信息窗体的句柄,一般填写显示信息窗体的成员变量m_hWnd。若不需要显示信息,也可填NULL。 成员wFunc :标识操作类型。使用以下四个宏定义: FO_COPY : 表示拷贝,从pFrom拷贝到pTo 。 FO_DELETE : 表示删除,删除pFrom文件(参数pTo忽略)。 FO_MOVE : 表示移动,从pFrom移动到pTo。 FO_RENAME : 表示改名,把文件pFrom改名为 pTo。 6.4 成员pFrom:为原文件的文件及路径名。这个字符串必须以双空字符结尾, 例如:c盘根目录下的文件a.txt,在此应表示为“c:\\a.txt\0\0”。对于CString类型的变量加一个“\0”字符即可。 成员pTo: 为目标文件的文件名,在参数wFunc为FO_DELETE时可忽略。 成员fFlags:为控制文件操作的标志,一共有十几个,他们之间可通过来“|”连接,在这里只介绍3个常用的值。 FOF_NOCONFIRMATION : 对于一切信息提示框都按确定处理。 FOF_SILENT : 不显示进度对话框。 FOF_SIMPLEPROGRESS: 显示一个不显示文件名的简单的进度对话框。 通过对FOF_NOCONFIRMATION和FOF_SILENT的设定,我们就可以在后台默默地处理拷贝删除操作。而设定FOF_SIMPLEPROGRESS,将显示进度对话框。 成员fAnyOperationsAborted和hNameMappings:主要用于处理多文件的情况。此处不再详细介绍。 成员lpszProgressTitle:当设定FOF_SIMPLEPROGRESS时,该参数为进度对话框的标题,若没有设定FOF_SIMPLEPROGRESS,则忽略。 当参数pFrom或pTo不包括路径时,函数默认当前系统路径,即用GetCurrentDirectory()函数取得的路径。 6.4 6.4 例:拷贝函数 BOOL Copy(CString strSource, CString strTarget) { CFileFind ff; SHFILEOPSTRUCT fop; //声明SHFILEOPSTRUCT结构 memset(fop, 0x00, sizeof(SHFILEOPSTRUCT)); //置空SHFILEOPSTRUCT结构 if (!ff.FindFile(strSource)) //查找文件是否存在 return false; ff.close(); strSource += \0; //设置为双空字符 fop.hwnd = NULL; fop.pFrom = strSource; fop.pTo = strTarget; fop.wFunc = FO_COPY; fop.fFlags = FOF_SILENT | FOF_NOCONFIRMATION; return !::SHFileOperation(fop); //调用函数并返回 } 定义: WINSHELLAPI DWORD WINAPI SHGetFileInfo( LPCTSTR pszPath, DWORD dwFileAttributes, SHFILEINFO FAR *psfi, UINT cbFileInfo, UINT uFlags); 参数说明: pszPath: 文件路径 dwFileAttributes: 文件属性标志,一般填0, psfi: 文件信息结构SHFILEINFO的指针,用于存储该函数返回的文件信息。定义如下: typedef struct _SHFILEINFO { HICON hIcon; //文件图标的句柄。 int iIcon;
显示全部