软件注册站
热情软件屋

 
如何制作Open、SaveAs通用对话框
编号: QA001446    
建立日期: 1999年8月1日 最后修改日期: 2004年1月16日
所属类别: C/C++ - 窗体与菜单
   
    Vc5.0
    Win98
    如何制作Open、SaveAs通用对话框?(Wanglairui)
   
    在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

   
 
把这个问题推荐给朋友
   
 
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio