 |
在VC中Open、SaveAs通用对话框对应CFileDialog类。在使用这个类前,需要加入
#include <afxdlgs.h>
该类的构造函数为:
CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL );
其中第一个参数为True,就显示Open对话框,否则显示SaveAs对话框。例子:
CFileDialog dlg(FALSE, NULL, NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
"C++ source|*.cpp|All files|*.*||");
dlg.DoModal();
当用户选择后,调用CFileDialog::GetPathName就可以获得用户选择的文件名。
如果不使用CFileDialog类,也可以使用GetOpenFileName函数。例子:
OPENFILENAME ofn; // 通用对话框结构
char szFile[260]; // 用于文件名的缓冲区
HWND hwnd; // 对话框的所有者窗口
HANDLE hf; // 文件句柄
// 初始化OPENFILENAME
ZeroMemory(&ofn, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hwnd;
ofn.lpstrFile = szFile;
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
// 显示“打开”对话框
if (GetOpenFileName(&ofn)==TRUE)
hf = CreateFile(ofn.lpstrFile, GENERIC_READ,
0, (LPSECURITY_ATTRIBUTES) NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
(HANDLE) NULL);
相关问题:
QA000374 "如何从CFileDialog派生类"。
此问题由李海回答。
附加关键字:编程, 源程序, programming, source code, C/C++, MFC, C++ Builder, Borland C++, Turbo C, C, BCB, 窗体与菜单, form, window, tform。
|