CFileDialog

合集下载

mfc 知识点总结

mfc 知识点总结

mfc 知识点总结MFC库的基本组成包括以下几个部分:1. CObject类:是所有MFC类的基类,提供了对象的基本功能,包括内存管理、类型信息、对象的打印和序列化等。

2. CWnd类:是窗口类的基类,封装了Windows窗口的创建、显示、消息处理等功能。

3. CFrameWnd类:是框架窗口类,派生自CWnd类,封装了应用程序的主窗口,提供了菜单、工具栏、状态栏等UI组件。

4. CDocument类和CView类:分别是文档类和视图类,用于管理应用程序中的文档和视图。

文档类负责文档的打开、保存、关闭等操作,视图类负责文档内容的显示和交互。

5. CWinApp类:是应用程序类的基类,封装了应用程序的初始化、消息循环、资源管理等功能。

MFC库提供了丰富的类和函数,用于处理Windows应用程序的各个方面,下面将对MFC的一些重要知识点进行总结。

1. 消息处理在MFC应用程序中,窗口的消息处理是至关重要的。

MFC提供了消息映射机制来进行消息处理。

通过DECLARE_MESSAGE_MAP宏和BEGIN_MESSAGE_MAP/END_MESSAGE_MAP 宏,在类中声明消息处理函数并将消息与处理函数进行映射。

例如:```cpp// 声明消息处理函数afx_msg void OnMouseMove(UINT nFlags, CPoint point);// 映射消息到处理函数BEGIN_MESSAGE_MAP(CMyWnd, CWnd)ON_WM_MOUSEMOVE()END_MESSAGE_MAP()```2. 对话框对话框是Windows应用程序中常用的界面元素,用于与用户进行交互。

MFC提供了CDialog类和CDialogEx类来封装对话框。

开发者可以使用资源编辑器创建对话框模板,然后通过类向导生成对话框类。

对话框类中可以处理控件的事件,并通过DoModal函数或Create函数来显示对话框。

MFC类库的基本类

MFC类库的基本类

MFC类库是一个层次结构,主要有CObject类、应用程序类、可视对象类、绘图和打印类、通用类、数据库类、Internet和网络类、OLE类。

(1)CObject类CObject类是MFC的抽象基类,MFC中的大多数类是从CObject类派生出来的。

它是MFC 中多数类和用户自定义的根类,该类为程序员提供了希望融入所编写程序的许多公共操作,包括对象的建立和删除、串行化支持、对象诊断输出、运行时信息以及集合类的兼容等。

CObject类的声明在Afx.h中。

(2)应用程序结构类该类主要用于构造框架应用程序的结构,提供了多数应用程序公用的功能.编写程序的任务是填充框架,添加应用程序专有的功能。

1.应用程序和线程支持类CWinThread类是所有线程的基类,窗口应用程序类CWinApp类就是从该类中派生来的。

每个应用程序有且只有一个应用程序对象,在运行程序中该对象和其他对象相互协调,该对象从CWinApp中派生出来。

该类封装了初始化、运行、终止应用程序的代码。

2.命令相关类CCmdTarget类是CObject的子类,它是MFC所有具有消息映射属性的基类。

消息映射规定了当一对象接收到消息命令时,应调用哪个函数对该消息进行处理。

程序员很少需要从CCmdTarget类中直接派生出新类,往往都是从它的子类中派生出新类。

如窗口类(CWnd)、应用程序类(CWinApp)、文档模板类(CDocTemplate)、视类(CView)及框架窗口类(CFrameWnd)等。

3.文档类文档对象由文档对象模板创建,用于管理应用程序的数据。

视图对象表示一个窗口的客户区,用于显示文档数据并允许读者与之交互。

有关文档/视结构的类如下:①CDocTemplate类:文档模板的基类。

文档模板用于协调文档、视图和框架窗口的创建。

②CSingleDocTemplate类:单文档界面(SDI)的文档模板。

③CMultiDocTemplate类:多文档界面(MDI)的文档模板。

在MFC中使用CFileDialog选择多个文件

在MFC中使用CFileDialog选择多个文件

在MFC中使用CFileDialog选择多个文件以下是在MFC中使用CFileDialog类选择多个文件的步骤:1. 创建CFileDialog对象。

首先,需要在代码中包含头文件<afxdlgs.h>,然后使用CFileDialog类的构造函数创建一个CFileDialog对象。

可以使用以下构造函数创建对象:```cppCFileDialog(BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY ,OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd *pParentWnd = NULL);```参数说明:- bOpenFileDialog:一个BOOL值,用于指定是打开文件对话框还是保存文件对话框。

如果为TRUE,则为打开文件对话框;如果为FALSE,则为保存文件对话框。

- lpszDefExt:默认扩展名,可以为空。

- lpszFileName:默认文件名,可以为空。

- dwFlags:一组位掩码,用于指定对话框的风格。

我们可以使用OFN_ALLOWMULTISELECT标志来启用多选功能。

- lpszFilter:用于过滤文件类型的过滤器字符串。

例如,可以使用“文本文件(*.txt),*.txt,所有文件(*.*),*.*”。

- pParentWnd:父窗口的指针,可以为空。

以下是一个示例创建CFileDialog对象的代码:```cppCFileDialog fileDlg(TRUE, NULL, NULL, OFN_ALLOWMULTISELECT, _T("文本文件(*.txt),*.txt,所有文件(*.*),*.*"), this);```2.显示文件对话框。

CFileDialog文件保存扩展名问题

CFileDialog文件保存扩展名问题
如果缓冲太小,函数返回FALSE并且CommDlgExtendedError函数返回FNERR_BUFFERTOOSMALL.。既然这样,lpstrFile缓冲的首先两个字节包含必需的大小(字节或字符)。
nMaxFile
指定lpstrFile缓冲的大小,以TCHARs为单位。对于ANSI版本,是字节的个数;对于Unicode版本,是字符的个数。这个缓冲必须足够存储路径和文件名字符串,包含结尾的null字符。如果缓冲太小,GetOpenFileName和GetSaveFileName函数返回假(FALSE)缓冲最小应该在256个字符长。
void * pvReserved;
DWORD dwReserved;
DWORD FlagsEx;
#endif // (_WIN32_WINNT >= 0x0500)
} OPENFILENAME, *LPOPENFILENAME;
成员
lStructSize
指定这个结构的大小,以字节为单位。
{
case 1:
{
if(strPath.Right(4) !=_T(".map") || strPath.Right(7) != _T(".map")) //判断文件扩展名
strPath += _T(".map");
如果这个成员是NULL,对话框不能保留用户自定义过滤器样式。
如果这个成员不是NULL,nMaxCustFilter成员的值必须指定以TCHARs为单位的lpstrCustomFilter缓冲的大小。对于ANSI版本,是字节的个数;对于Unicode版本,是字符的个数。
nMaxCustFilter

CFile操作详解

CFile操作详解

CFile操作详解详解, CFile各种关于文件的操作在程序设计中是十分常见,如果能对其各种操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而在较短的时间内编写出高效的代码,因而熟练的掌握文件操作是十分重要的。

本文将对VisualC++中有关文件操作进行全面的介绍,并对在文件操作中经常遇到的一些疑难问题进行详细的分析。

1.文件的查找当对一个文件操作时,如果不知道该文件是否存在,就要首先进行查找。

MFC中有一个专门用来进行文件查找的类CFileFind,使用它可以方便快捷地进行文件的查找。

下面这段代码演示了这个类的最基本使用方法。

CString strFileTitle;CFileFind finder;BOOL bWorking = finder.FindFile("C:\\windows\\sysbkup\\*.cab");while(bWorking){bWorking=finder.FindNextFile();strFileTitle=finder.GetFileTitle();}2.文件的打开/保存对话框让用户选择文件进行打开和存储操作时,就要用到文件打开/保存对话框。

MFC的类CFileDialog用于实现这种功能。

使用CFileDialog声明一个对象时,第一个BOOL型参数用于指定文件的打开或保存,当为TRUE时将构造一个文件打开对话框,为FALSE时构造一个文件保存对话框。

在构造CFileDialog对象时,如果在参数中指定了OFN_ALLOWMULTISELECT风格,则在此对话框中可以进行多选操作。

此时要重点注意为此CFileDialog对象的m_ofn.lpstrFile分配一块内存,用于存储多选操作所返回的所有文件路径名,如果不进行分配或分配的内存过小就会导致操作失败。

下面这段程序演示了文件打开对话框的使用方法。

CFileDialog mFileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,"All Files (*.*)|*.*||",AfxGetMainWnd());CString str(" ",10000);mFileDlg.m_ofn.lpstrFile=str.GetBuffer(10000);str.ReleaseBuffer();POSITION mPos=mFileDlg.GetStartPosition();CString pathName(" ",128);CFileStatus status;while(mPos!=NULL){pathName=mFileDlg.GetNextPathName(mPos);CFile::GetStatus( pathName, status );}3.文件的读写文件的读写非常重要,下面将重点进行介绍。

在CFileDialog对话框中添加控件

在CFileDialog对话框中添加控件

在C对话框中添加控件关键字:C扩展类,OFNHookProc需求描述:昨天遇到一个用户需求,在C对话框(SAVE)中加入一个Check , 一个Edit,一个Spin控件,dlg.Domodal()==IDOK返回时要同时获得Edit控件中的数据.实现方法:如果只需要控制控件,用方法一即可,但如果需要获取数据,则只能用方法二。

我最终用的就是方法二.方法一: 首先查找MSDN关于C扩展的实现描述,上网查到实现预览图片式的C的例子。

按照其思路从C派生了一个新的类C.在类中添加以下代码#define WM_CHECKZOOMIN WM_USER+1856public:BOOL bZoomIn;UINT nMul; //[1~100]//前置声明---------------BOOL NEAR CALLBACK HandleNotify(HWND hDlg, LPOFNOTIFY pofn);UINT_PTR CALLBACK OFNHookProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);// CIMPLEMENT_DYNAMIC(C, C)C(BOOL bOpen, LPCTSTR lpszDefExt, LPCTSTR lpsz,DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) :C(bOpen, lpszDefExt, lpsz, dwFlags, lpszFilter, pParentWnd){//这个四个常用标识位m_ofn.Flags |= OFN_ENABLETEMPLATE |OFN_HIDEREADONLY|OFN_EXPLORER; //OFN_EXPLORER | OFN_ENABLEHOOKm_ofn.lpstrTitle = _T("高级保存对话框");m_ofn.hInstance = AfxGetInstanceHandle();m_ofn.lpstrFilter = _T("*.bmp\0*.BMP\0所有文件\0 *.*\0 ");m_ofn.lpTemplateName = MAKEINTRESOURCE(IDD_);m_ofn.lpfnHook = (LPOFNHOOKPROC)OFNHookProc;}//Hook function for the Comm Dlg//在这里处理我们感兴趣的消息,想要哪个,截哪个!UINT_PTR CALLBACK OFNHookProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam){switch (uMsg){case WM_INITDIALOG: //初始化对话框上的控件if(SendDlgItemMessage(hDlg, IDC_CHECK_ZOOMIN, BM_GETCHECK,0,0) == BST_UNCHECKED){::EnableWindow(GetDlgItem(hDlg,IDC_EDIT_ZOOMNUM),FALSE);::EnableWindow(GetDlgItem(hDlg,IDC_SPIN_ZOOMNUM),FALSE);::SetWindowText(GetDlgItem(hDlg, IDC_EDIT_ZOOMNUM),_T("1"));//ShowWindow(button,SW_HIDE);}break;case WM_DESTROY: //消毁对话框{LPOPEN lpOFN = (LPOPEN)GetWindowLong(hDlg, DWL_USER);}break;case WM_COMMAND: //这里处理,IDC_CHECK_ZOOMIN命令{if ((HIWORD(wParam) == BN_CLICKED) && (LOWORD(wParam) ==IDC_CHECK_ZOOMIN)){BOOL bZoomIn = TRUE;if(SendDlgItemMessage(hDlg, IDC_CHECK_ZOOMIN, BM_GETCHECK, 0, 0) == BST_CHECKED){bZoomIn = TRUE;::EnableWindow(GetDlgItem(hDlg,IDC_EDIT_ZOOMNUM),TRUE);::EnableWindow(GetDlgItem(hDlg,IDC_SPIN_ZOOMNUM),TRUE);}else{bZoomIn = FALSE;//::SetWindowText(GetDlgItem(hDlg, IDC_EDIT_ZOOMNUM),"");::EnableWindow(GetDlgItem(hDlg,IDC_EDIT_ZOOMNUM),FALSE);::EnableWindow(GetDlgItem(hDlg,IDC_SPIN_ZOOMNUM),FALSE);}HWND hParent = GetParent(hDlg); // 注意hDlg是新加的模板对话框句柄,它是C对话框的子部分,要获取C对话框的句柄需要用GetParent函数PostMessage(hParent,WM_CHECKZOOMIN,(WPARAM)bZoomIn,(LPARAM) 0);bZoomIn = FALSE;}break;case WM_NOTIFY:HandleNotify(hDlg, (LPOFNOTIFY)lParam);break;}return 0;}//这里处理notify 消息BOOL NEAR CALLBACK HandleNotify(HWND hDlg, LPOFNOTIFY pofn){C dlg(TRUE);switch (pofn->hdr.code){case CDN_SELCHANGE:{//char sz];//// Get the path of the selected file.//if (CommDlg_OpenSave_Get(GetParent(hDlg), szFile, sizeof(szFile)) <= sizeof(szFile))//{// if(Get(szFile) != )// {// //Should we load the Pic// if(SendDlgItemMessage(hDlg, IDC_CHECK1, BM_GETCHECK,0,0) == BST_UNCHECKED)// dlg.ShowImagepreview(hDlg, szFile);// }//}}break;case CDN_FILEOK:{int num;GetDlgItemInt(hDlg,IDC_EDIT_ZOOMNUM,&num,FALSE);if(SendDlgItemMessage(hDlg, IDC_CHECK_ZOOMIN, BM_GETCHECK, 0, 0) == BST_CHECKED){dlg.bZoomIn = TRUE;}elsedlg.bZoomIn = FALSE;return FALSE;}break;}return(TRUE);}原计划从回调函数得到触发消息,然后用PostMessage的方式将自定义的WM_CHECKZOOMIN消息发给主窗口,在主窗口中更新我新加的变量bZoomIn和nMul的值。

cfiledialog 函数

cfiledialog 函数

cfiledialog 函数摘要:一、cfiledialog函数简介二、cfiledialog函数的用途三、cfiledialog函数的参数四、cfiledialog函数的返回值五、cfiledialog函数的实例正文:cfiledialog函数是Python中的一个用于文件选择的函数,它属于tkinter 模块,主要用途是在对话框中让用户选择文件。

cfiledialog函数的用途主要有两个:一是让用户选择单个文件,二是让用户选择多个文件。

这可以通过函数的第一个参数来指定,如果参数为"r",则表示选择单个文件,如果参数为"R",则表示选择多个文件。

cfiledialog函数的参数主要有以下几个:- parent:对话框的父窗口,默认为None。

- title:对话框的标题,默认为"选择文件"。

- file:可选参数,表示已经选择的文件,如果为None,则表示没有选择任何文件。

- mode:可选参数,表示选择文件的模式,默认为"r"。

cfiledialog函数的返回值是一个字符串,表示用户选择的文件路径。

如果没有选择任何文件,则返回空字符串。

下面是一个使用cfiledialog函数的实例:```pythonimport tkinter as tkdef select_file():file_path = tk.filedialog.askopenfilename()print(file_path)root = ()root.withdraw() # 隐藏主窗口button = tk.Button(root, text="选择文件", command=select_file)button.pack()root.mainloop()```在这个例子中,我们首先导入了tkinter模块,然后定义了一个名为select_file的函数。

Visual C++(VC)中“选择文件夹”对话框的程序的编写

Visual C++(VC)中“选择文件夹”对话框的程序的编写

Visual C++(VC)中“选择文件夹”对话框的程序的编写2010-04-10 01:07 A.M.在实际的MFC编程当中,常常需要弹出对话框选择文件、选择目录等操作,对于选择文件,用CFileDialog就可以很简单的解决,而对于选择目录,则稍稍需要多一些步骤,需要自己创建Dialog。

首先创建如下的对话框,并为它创建类Dialog,在Dialog头文件中添加保存目录名的变量CString m_strPath,然后为编辑框右边的按钮添加消息响应函数OnButtonBrowser(),并添加如下代码。

void CDialog::OnButtonBrowser(){// TODO: Add your control notification handler code hereUpdateData(TRUE);char szDir[MAX_PATH];BROWSEINFO bi;ITEMIDLIST *pidl;bi.hwndOwner = this->m_hWnd; // 指定父窗口,在对话框显示期间,父窗口将被禁用bi.pidlRoot = NULL; // 如果指定NULL,就以“桌面”为根bi.pszDisplayName = szDir;bi.lpszTitle = "请选择目录"; // 这一行将显示在对话框的顶端bi.ulFlags = BIF_STATUSTEXT | BIF_USENEWUI | BIF_RETURNONLYFSDIRS;bi.lpfn = NULL;bi.lParam = 0;bi.iImage = 0;pidl = SHBrowseForFolder(&bi);if(pidl == NULL) return;if(!SHGetPathFromIDList(pidl, szDir)) return;else m_strPath = szDir;UpdateData(FALSE);}当程序启动起来的时候,点击按钮,就会弹出如下的选择目录的对话框=========================================================================== =======Visual C++(VC)中,BROWSEINFO结构中包含有用户选中目录的重要信息。

MFC中文件操作、查找与选择总结

MFC中文件操作、查找与选择总结

MFC总结(一):MFC中文件操作、查找与选择总结(1)本文主要涉及以下几个方面,均为在MFC编程中较为常用的:CFile操作、CArchive操作、如何选择文件和文件夹、如何查找文件、获取当前目录、_access函数等。

(一)使用CFile类操作文件CFile类在MFC的文件操作中应该是最常用的了。

主要的成员函数有Open、Close、Write、Read、Seek、SeekToEnd、GetLength、GetPosition,具体用法见MSDN。

(1)文件打开操作:文件打开有两种方式,一种是先定义类对象,在用Open函数打开;一种是在定义类对象时传入文件名和打开方式。

分别如下CFile file;if(!file.Open(lpszFileName, nOpenFlags ))return;或CFile file(lpszFileName, nOpenFlags);(2)文件打开方式:文件打开方式,即上述nOpenFlags的值主要由一些宏定义的值组合而成,具体见MSDN,常用的有如下几种:A. CFile::modeCreate | CFile::modeNoTruncate |CFile::modeWrite,以写文件的方式打开,如果文件不存在,则新建文件,否则打开已有文件进行写入操作,此时不会清空原有文件;B. 将上述CFile::modeWrite更换为CFile::modeRead或者CFile::modeReadWrite可实现读操作或者同时读写。

(3)判断文件结束判断文件是否结束,没有结束则继续读取,否则关闭退出。

这点在编程时常用。

对于CFile常用的判断文件结束的方法是:while(file.GetPosition() < file.GetLength()){ //文件未结束//Add code ....}(4)值得注意的几点:A. 当文件名中包含路径时,要注意使用\\,如C:\\MyFile.DAT,在Unicode下时,需要使用_T("C:\\MyFile.DAT");B. 采用(2)中A方式写文件时,注意使用file.SeekToEnd()将文件指针移至文件尾,再写入,否则会覆盖已有的数据,这点经常被很多初学者忽视;C. 在打开文件后就要紧接着写下Close,养成这样的习惯,避免忘记关闭文件。

在VC++中定制CFileDialog

在VC++中定制CFileDialog

在VC++中定制CFileDialogMFC为我们提供了OFileDialog的简单易用,但毕竟“千篇一律,没有性格”,在实际应用中往往需要具有个性特色的用户界面和个性化的文件对话框。

要定制文件对话框,就必须获得对文件对话框中各个控件的控制。

本文将通过一个简单的例子介绍控制文件对话框中控件的方法。

把文件对话框的高度比一般情况扩大150个像素,并修改它的标题。

通过classwizard生成一个CFileDialog的派生类CCoolFileDialog,然后编辑CoolFileDialog.cpp中处理WM_INITDIALOG的OnInitDialog函数。

在indnde.CPP的开头必须加入#CoolFileDialog<dlgs.h>BOOL CoolFileDialog::OnInitDialog()//iExtraSize将按照你所要的确定对话框的最终尺寸const UINT iExtraSize=150;//要控制的文件对话框中的控件的个数const UINT nControls=8;//获得指向父对话框的指针CWnd*wndDlg=GetParent();//获得对话框的尺寸RECT Rect;wndDlg->GetWindowRect(&Rect);//修改对话框的尺寸wndDlg->GetWindowRect(&Rect);//修改对话框的尺寸wndDlg->SetWindowPos(NULL,0,0,Rect.right-Rect.left,Rect.bottom-Rect.top+iExtraSize,SWP_NOMOVE);//控件的ID在<dlgs.h>中定义UINT Controls[nControls]={stc3,stc2,//两个label控件edt1,cmb1,//edit控件和//drop-down box控件IDOK,IDCANCEL,chx1,//check按钮lst1//list控件};//获得对文件对话框中各个控件的控制,并把它们移到新的位置for (int i=0;i<nControls ; i++){CWnd *wndCtrl =wndDlg->GetDlgItem(Controls[i]); wndCtrl->GetWindowRect(&Rect);wndDlg->ScreenToClient(&Rect);//根据对话框的新的尺寸移动各控件。

VC菜单命令详解(文件打开、保存与关闭)

VC菜单命令详解(文件打开、保存与关闭)

VC菜单命令详解(文件打开、保存与关闭)第一部分:五个命令ID:处理函数ID_FILE_NEW CWinApp::OnFileNewID_FILE_OPEN CWinApp::OnFileOpenID_FILE_SA VE CDocument::OnFileSaveID_FILE_SA VEAS CDocument::OnFileSaveAsID_FILE_CLOSE CDocument::OnFileClose1.ID_FILE_NEWCWinApp::OnFileNew调用CDocManager::OnFileNew。

|CDocManager::OnFileNew判断文档模板是否多于一个,是则显示文档类型对话框(AFX_IDD_NEWTYPEDLG)让用户选择要创建的文档类型。

然后调用CDocTemplate::OpenDocumentFile(NULL)。

|CDocTemplate::OpenDocumentFile(LPCTSTR lpszPathName,BOOL bMake_Visible=TRUE)对于SDI和MDI的处理不一样。

对于SDI,1,若已有文档打开,对其重新初始化,调用CDocument::SaveModified()保存当前文档;若没有文档存在,则调用CreateNewDocument()创建文档对象,再调用CreateNewFrame(pDoucment,NULL)创建文档的框架窗口。

2,若lpszPathName为NULL,则调用CDocument::OnNewDocument()处理新文档,用pDocument->SetPathName(lpszPathName)设置文档的路径。

3,判断当前线程主框架窗口是否存在,不存在则将1中创建的新框架作为主框架。

4,调用InitialUpdateFrame显示框架窗口。

对于MDI,与SDI基本相同,但是没有第3步。

|CDocument::OnNewDocument()首先调用DeleteContents()删除原文档内容,使用m_strPathName.Empty()清除当前文档路径,SetModifiedFlag(FALSE)。

cfiledialog用法

cfiledialog用法

cfiledialog用法cfiledialog是一个常用的文件对话框控件,它可以让用户选择文件或者目录,并返回选择的路径或者文件名。

在MFC中,我们可以通过CFileDialog类来使用cfiledialog控件,下面我们就来详细介绍一下cfiledialog用法。

一、基本用法在MFC中,我们可以通过CFileDialog类来使用cfiledialog 控件,其基本用法如下:CFileDialog dlg(TRUE); //创建一个打开文件对话框dlg.DoModal(); //显示对话框其中,TRUE表示创建一个打开文件对话框,如果我们要创建一个保存文件对话框,则可以将TRUE改为FALSE。

在调用DoModal()方法之后,cfiledialog对话框就会显示出来,用户可以通过该对话框选择文件或者目录。

二、设置初始路径如果我们需要设置cfiledialog对话框的初始路径,可以通过以下代码实现:CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, NULL, NULL, 0, TRUE); //创建一个打开文件对话框dlg.m_ofn.lpstrInitialDir = _T('C:'); //设置初始路径为C盘根目录dlg.DoModal(); //显示对话框在上述代码中,我们通过m_ofn.lpstrInitialDir成员变量来设置cfiledialog对话框的初始路径,这里我们将其设置为C盘根目录。

三、设置过滤器如果我们需要只显示特定类型的文件,可以通过设置过滤器来实现,例如只显示txt文件,可以通过以下代码实现:CFileDialog dlg(TRUE, NULL, _T('*.txt'),OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T('Text Files (*.txt)|*.txt|All Files (*.*)|*.*||'), NULL, 0, TRUE); //创建一个打开文件对话框dlg.DoModal(); //显示对话框在上述代码中,我们通过第三个参数来设置过滤器,这里我们设置为*.txt,表示只显示txt文件。

CFileDialog类

CFileDialog类

CFileDialog目录CFileDialog类封装了Windows常用的文件对话框。

常用的文件对话框提供了一种简单的与Windows标准相一致的文件打开和文件存盘对话框功能。

可以用构造函数提供的方式使用CFileDialog,也可以从CFileDialog 派生出自己的对话类并编写一个构造函数来适应你的需要。

每种情况下,对话框都与标准MFC对话框一样工作。

因为它们都是CCommonDialog类的派生类。

要使用CFileDialog,先用CFileDialog构造函数构造一个对象,当创建了一个对话框后,可以设置或修改m_ofn结构中的任何值,以初始化对话框控件的值或状态。

m_ofn结构是OPENFILENAME类型的。

要了解更多信息,可参阅联机文档“Win32 SDK”中的OPENFILENAME结构。

初始化对话框控件后,调用DoModal成员函数显示对话框并使用户输入路径和文件。

DoModal返回不论是用户选择了OK(IDOK)还是取消(IDCANCEL)按钮。

当DoModal返回IDOK,可以使用某一个CFileDIalog的公共成员函数获取用户输入的信息。

CFileDIalog包含许多保护成员,使你可以处理常用的共享冲突、文件名合法性检查、列表框改变通知。

这些保护成员对许多应用来说用处不大,因为缺省处理是自动的。

对这些函数来说,消息映射入口是不必要的,因为它们是标准虚函数。

可以使用Windows CommDlgExtendError函数判断在初始化对话框时是否是发生了错误,并获取关于错误的更多信息。

析构一个CFileDialog对象是自动,无须调用CDialog::EndDialog。

要使用户选用多个文件,可在调用DoModal之前设置OFN_ALLOWMULTISELECT标志。

你应提供文件名缓冲区来放置返回的多个文件名的列表,这通过用一个分配了的缓冲区指针替换m_ofn.lpstrFile来实现,要在创建了CFileDialog之后调用DoModal之前进行此操作。

cfiledialog 函数

cfiledialog 函数

cfiledialog 函数摘要:1.函数概述2.函数功能3.函数参数4.函数返回值5.函数示例6.使用注意正文:1.函数概述cfiledialog 函数是一种用于创建文件对话框的函数,通常用于让用户选择或创建文件。

在Windows 操作系统中,该函数属于C++编程语言的MFC (Microsoft Foundation Class)库,是MFC 库中的一个成员函数。

2.函数功能cfiledialog 函数的主要功能是创建一个文件对话框,用户可以在对话框中选择一个文件,或者输入一个新的文件名来创建一个新文件。

这个函数可以根据不同的参数设置,实现不同的功能,例如:打开文件、保存文件、选择文件夹等。

3.函数参数cfiledialog 函数的参数包括:- hwndParent:指向对话框父窗口的句柄。

- lpTemplateName:指向一个以null 结尾的字符串,该字符串指定了文件对话框的类型,例如:“file open”或者“save as”。

- lpTemplateData:指向一个结构体,该结构体包含了文件对话框的附加信息,例如:文件类型过滤器、默认文件名等。

- dwFlags:一个整数,用于指定文件对话框的行为和样式。

- lpFileName:指向一个字符串,用于存储用户选择的文件名或者输入的新文件名。

如果函数返回IDOK,那么这个参数将包含选定的文件名;如果返回IDCANCEL,那么这个参数将包含一个空字符串。

4.函数返回值cfiledialog 函数的返回值是一个整数,表示对话框的操作结果。

可能的返回值包括:- IDOK:用户选择了一个文件,或者输入了一个新文件名,并且点击了“打开”或“保存”按钮。

此时,lpFileName 参数包含选定的文件名。

- IDCANCEL:用户点击了“取消”按钮,或者没有选择任何文件,并且点击了“打开”或“保存”按钮。

此时,lpFileName 参数包含一个空字符串。

cfiledialog 函数

cfiledialog 函数

cfiledialog 函数详解`CFileDialog` 是MFC(Microsoft Foundation Classes)框架中提供的一个类,用于创建和管理文件对话框。

文件对话框是一种常见的用户界面元素,用于选择文件或保存文件。

`CFileDialog` 类的详解如下:构造函数```cppCFileDialog(BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL);```- `bOpenFileDialog`:`TRUE` 表示打开文件对话框,`FALSE` 表示保存文件对话框。

- `lpszDefExt`:默认的文件扩展名。

- `lpszFileName`:对话框打开时显示的默认文件名。

- `dwFlags`:对话框的标志,例如隐藏只读选项,提示覆盖等。

- `lpszFilter`:文件筛选器,例如"文本文件(*.txt)|*.txt|所有文件(*.*)|*.*"。

- `pParentWnd`:对话框的父窗口。

成员函数1. `DoModal`:显示文件对话框并等待用户操作。

```cppINT_PTR DoModal();```2. `GetPathName`:获取用户选择的文件的完整路径。

```cppCString GetPathName() const;```3. `GetFileExt`:获取用户选择的文件的扩展名。

```cppCString GetFileExt() const;```4. `GetFileTitle`:获取用户选择的文件的标题(不包含路径)。

CFileDialog文件保存扩展名问题

CFileDialog文件保存扩展名问题

CFileDialog文件保存扩展名问题MFC之CFileDialog文件保存扩展名问题void CmapfileDlg::OnBnClickedNew2(){static char BASED_CODE szFilter[] = "Map Files (*.map)|*.map|MapCfg Files(*.mapCfg) |*.mapCfg||";CFileDialogdlg(FALSE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEP ROMPT, /szFilter,AfxGetMainWnd());CString strPath;CFileException e;if(dlg.DoModal() == IDOK) //判断是否按下"保存"按钮{strPath = dlg.GetPathName(); //获得文件保存路径,为下面right(4)方便,而不用GetFileName();//根据用户选择的扩展名下拉框来确定添加的扩展名switch (dlg.m_ofn.nFilterIndex) //此处可以获取扩展名下拉框是采用的哪种过滤串{case 1:{if(strPath.Right(4) !=_T(".map") || strPath.Right(7) != _T(".map")) //判断文件扩展名strPath += _T(".map");break;}case 2:{if(strPath.Right(7) !=_T(".mapCfg") || strPath.Right(7) != _T(".mapCfg")) //判断文件扩展名strPath += _T(".mapCfg");break;}}if( access(strPath, 0) == 0 )//需要#include //上述CFileDialog 只能检查名字一模一样的文件是否已经存在,此段代码用来检测保存的文件未设置扩展名,该文件夹内是否有添加扩展名后名字一样的文件,但是有个问题,若文件夹内有“1”的文件,想保存的文件名也是“1”,则会提示无法保存,而要的实际情况是,仍然可以保存,因为会添加扩展名进去。

一个定制CFileDialog对话框的实例

一个定制CFileDialog对话框的实例

一个定制CFileDialog对话框的实例很多程序员都喜欢让自己的代码运行效果与众不同。

Windows系统的应用程序打开某个文件一般使用的都是默认的CFileDialog。

但是这个默认的CFileDialog往往满足不了用户的要求。

我就碰到一个这样的用户,他的要求如下:1、在默认的CFileDialog对话框中加一个预览窗格,以便在选中ASCII文件时能看到所选文件的内容,也就是用*.txt 作为文件过滤条件。

2、在默认的CFileDialog对话框中加一个"全部"按钮来选择某个目录中所有的.txt文件。

3、如果选择的目录中没有.txt文件时,要将"全部"按钮disable,也就是置灰这个按钮。

实现上面这些需求必须要改装CFileDialog对话框。

当最后写完程序时,功能到是全都实现了,但在Windows 2000环境测试中,用户发现了这样一个问题:如果先选中某个文件,然后再去选某个文件夹,预览窗格仍然显示的那个文件的内容。

尽管在OnFileNameChange中对CDN_SELCHANGE进行了处理,为了获取所选的文件/路径名,也调用了CFileDialog::GetPathName。

但是即使是选中了文件夹,GetPathName仍然返回的是文件的名字。

即便尝试用其它的通知消息和函数,比如 CDN_FOLDERCHANGE 和 GetFileName,但仍旧存在同样的问题。

必须承认在Windows 2000中,CFileDialog是个不完美的对话框,确实存在上述问题。

正是有这些不完美,程序员们才忙得个不亦乐乎......那么到底如何判断用户选中的是文件还是文件夹呢?下面就让我们从用户需求开始,一个一个解决所碰到的问题。

首先简单介绍下本文引入的三个辅助类:CFileDialogHook;CFileDialogOwnerHook和CFileDlgHelper,这三个类很简单,其功能分别是:子类化文件对话框;子类化文件对话框的父窗口或宿主窗口,这两个类只在CFileDlgHelper类中使用,一些重要的处理都在CFileDlgHelper中。

编程自定义CFileDialog对话框

编程自定义CFileDialog对话框

编程自定义CFileDialog对话框
乔建魁
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】2005(000)012
【摘要】CFileDialog类给软件开发带来了极大的方便,实践中还需要定制自己的FileDialog.本文介绍几种定制的方法,包括修改文件对话框标题,更改文件列表框的大小,在对话框中添加按钮等控件,以及只显示目录的对话框等.
【总页数】4页(P31-34)
【作者】乔建魁
【作者单位】无
【正文语种】中文
【中图分类】TP3
【相关文献】
1.VC++中模态对话框和非模态对话框的编程 [J], 李琳
2.利用MFC的CFileDialog生成Windows2000文件对话框 [J], 周鸣扬
3.基于Linux Qt4下自定义对话框的设计与实现 [J], 项伟
4.第三讲VBA变量、对话框及自定义函数 [J], 刘曜
5.自定义打开/保存通用对话框 [J], 相逢一笑
因版权原因,仅展示原文概要,查看原文内容请购买。

C++文件(夹)选择对话框

C++文件(夹)选择对话框

C++⽂件(夹)选择对话框由于各种应⽤,我们需要调⽤系统的打开⽂件对话框或者打开⽂件夹对话框,或两者兼有。

今遇到这个情况已经解决,特写下这篇博⽂。

1.打开⽂件对话框常⽤的⽅法是使⽤系统的CFileDialog。

这⾥介绍另外⼀种⽅法就是使⽤OPENFILENAME这个结构体和GetOpenFileName()这个函数,可以实现单选⽂件或者多选⽂件,代码如下:需引⼊头⽂件#include "CommDlg.h"[cpp]1. TCHAR szBuffer[MAX_PATH] = {0};2. OPENFILENAME ofn= {0};3. ofn.lStructSize = sizeof(ofn);4. ofn.hwndOwner = m_hWnd;5. ofn.lpstrFilter = _T("Exe⽂件(*.exe)\0*.exe\0所有⽂件(*.*)\0*.*\0");//要选择的⽂件后缀6. ofn.lpstrInitialDir = _T("D:\\Program Files");//默认的⽂件路径7. ofn.lpstrFile = szBuffer;//存放⽂件的缓冲区8. ofn.nMaxFile = sizeof(szBuffer)/sizeof(*szBuffer);9. ofn.nFilterIndex = 0;10. ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_EXPLORER ;//标志如果是多选要加上OFN_ALLOWMULTISELECT11. BOOL bSel = GetOpenFileName(&ofn);这样就可以打开选择⽂件对话框了。

可以选择需要的⽂件。

szBuffer是存放的选择的⽂件路径。

1.1 多选下⾯的代码演⽰了如何得到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); }}2.打开⽂件夹对话框⽅法:需引⼊头⽂件:#include "Shlobj.h"[cpp]1. TCHAR szBuffer[MAX_PATH] = {0};2. BROWSEINFO bi;3. ZeroMemory(&bi,sizeof(BROWSEINFO));4. bi.hwndOwner = NULL;5. bi.pszDisplayName = szBuffer;6. bi.lpszTitle = _T("从下⾯选⽂件夹⽬录:");7. bi.ulFlags = BIF_RETURNFSANCESTORS;8. LPITEMIDLIST idl = SHBrowseForFolder(&bi);9. if (NULL == idl)10. {11. return;12. }13. SHGetPathFromIDList(idl,szBuffer);上⾯的代码就可以打开⼀个选择⽂件夹对话框了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CFileDialog[编辑本段]CFileDialog文件选择对话框的使用:首先构造一个对象并提供相应的参数,构造函数原型如下:CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDef Ext = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OF N_HIDEREADONLY | OFN_OVERW RITEPROMPT, LPCTSTR lpszFilter = NULL, CW nd* pParentW nd = NULL );参数意义如下:bOpenFileDialog 为TRUE则显示打开对话框,为FALSE则显示保存对话文件对话框。

lpszDefExt 指定默认的文件扩展名。

lpszFileName 指定默认的文件名。

dwFlags 指明一些特定风格。

lpszFilter 是最重要的一个参数,它指明可供选择的文件类型和相应的扩展名。

参数格式如:"Chart Files (*.xlc)|*.xlc|W orksheet Files (*.xls)|*.xls|Data Files (*.xlc; *.xls)|*.xlc; *.xls|All Files (*.*)|*.*||";文件类型说明和扩展名间用| 分隔,同种类型文件的扩展名间可以用; 分割,每种文件类型间用| 分隔,末尾用||指明。

pParentW nd 为父窗口指针。

创建文件对话框可以使用DoModal(),在返回后可以利用下面的函数得到用户选择:CString CFileDialog::GetPathName( ) 得到完整的文件名,包括目录名和扩展名如:c: est est1.txtCString CFileDialog::GetFileName( ) 得到完整的文件名,包括扩展名如:test1.txtCString CFileDialog::GetExtName( ) 得到完整的文件扩展名,如:txt CString CFileDialog::GetFileTitle ( ) 得到完整的文件名,不包括目录名和扩展名如:test1POSITION CFileDialog::GetStartPosition( ) 对于选择了多个文件的情况得到第一个文件位置。

CString CFileDialog::GetNextPathName( POSITION& pos ) 对于选择了多个文件的情况得到下一个文件位置,并同时返回当前文件名。

但必须已经调用过POSITION CFileDialog::GetStartPosition( )来得到最初的POSITI ON变量。

例如{CStringFilePathName;CFileDialog dlg(TRUE);///TRUE为OPEN对话框,FALSE为SAVE AS 对话框if(dlg.DoModal()==IDOK)FilePathName=dlg.GetPathName();}相关信息:CFileDialog 用于取文件名的几个成员函数:假如选择的文件是C:W INDOW STEST.EXE则:(1)GetPathName();取文件名全称,包括完整路径。

取回C:W INDOWSTE ST.EXE(2)GetFileName();取文件全名:TEST.EXE(3)GetFileTitle();取回TEST(4)GetFileExt();取扩展名EXE补充: 在控制台下使用这个类需要设置在静态库中使用MFC,然后构造A fxSetResourceHandle(Get ModuleHandle(NULL));相关头文件#include <Afxdlgs.h>例:int main(){AfxSetResourceHandle(GetModuleHandle(NULL));CFileDialog filedlg(TRUE);if(IDOK==filedlg.DoModal()){...}return 0;}附dwFlagsFlagsA set of bit flags you can use to initialize the dialog box. W hen t he dialog box returns, it sets these flags to indic ate the user's input. This member can be a combination of the following flags.OFN_ALLOW MULT ISELECTSpecifies that the File Name list box allows multiple selections. If you also set the OFN_EXPLORER flag, the dialog box uses the Expl orer-style user interface; otherwise, it uses the old-style user interface.If the user selects more than one file, the lpstrFile buffer returns the path to the current directory followed by the file names of the sel ected files. The nFileOffset member is the offset, in byt es or characte rs, to the first file name, and the nFileExtension member is not used. For Explorer-style dialog boxes, the directory and file name strings a re NULL separated, with an extra NULL character after the last file n ame. This format enables the Explorer-style dialog boxes to return lon g file names that include spaces. For old-style dialog boxes, the direc tory and file name strings are separated by spaces and the function u ses short file names for file names with spaces. You can use the Fin dFirstFile function to convert between long and short file names.If you specify a custom template for an old-style dialog box, the definition of the File Name list box must contain the LBS_EXTENDED SEL value.OFN_CREATEPROMPTIf the user specifies a file that does not exist, this flag causes th e dialog box to prompt the user for permission to create the file. If th e user chooses to create the file, the dialog box closes and the funct ion returns the specified name; otherwise, the dialog box remains ope n. If you use this flag with the OFN_ALLOW MULTISELECT flag, the d ialog box allows the user to specify only one nonexistent file.OFN_DONTADDTORECENTW indows 2000/XP: Prevents the system from adding a link to the selected file in the file system directory that co ntains the user's mostrecently used documents. To retrieve the location of this directory, c all the SHGetSpecialFolderLocation function with the CSIDL_RECENT f lag.OFN_ENABLEHOOKEnables the hook function specified in the lpfnHook member.OFN_ENABLEINCLUDENOTIF YW indows 2000/XP: Causes the dialog box to send CDN_INCLUDEI TEM notification messages to your OFNHookProc hook procedure whe n the user opens a folder. The dialog box sends a notification for ea ch item in the newly opened folder. These messages enable you to c ontrol which items the dialog box displays in the folder's item list.OFN_ENABLESIZINGW indows 2000/XP, W indows 98/Me: Enables the Explorer-style dial og box to be resized using either the mouse or the keyboard. By def ault, the Explorer-style Open and Save As dialog boxes allow the dial og box to be resized regardless of whether this flag is set. This flag is necessary only if you provide a hook procedure or custom template. The old-style dialog box does not permit resizing.OFN_ENABLETE MPLATEIndicates that the lpTemplateName member is a pointer to the na me of a dialog template resource in the module identified by the hInst ance member. If the OFN_EXPLORER flag is set, the system uses th e specified template to create a dialog box that is a child of the defa ult Explorer-style dialog box. If the OFN_EXPLORER flag is not set, t he system uses the template to create an old-style dialog box that re places the default dialog box.OFN_ENABLETE MPLATEHANDLEIndicates that the hInstance member identifies a data block that c ontains a preloaded dialog box template. The system ignores lpTempla teName if this flag is specified. If the OFN_EXPLORER flag is set, th e system uses the specified template to create a dialog box that is a child of the default Explorer-style dialog box. If the OFN_EXPLORER flag is not set, the system uses the template to create an old-style dialog box that replaces the default dialog box.OFN_EXPLORERIndicates that any customizations made to the Open or Save As dialog box use the new Explorer-style customization methods. For mor e information, see Explorer-Style Hook Procedures and Explorer-Style Custom Templates.By default, the Open and Save As dialog boxes use the Explorer-style user interface regardless of whether this flag is set. This flag is necessary only if you provide a hook procedure or custom template, or set the OFN_ALLOW MULT ISELECT flag.If you want the old-style user interface, omit the OFN_EXPLORER flag and provide a replacement old-style template or hook procedure. If you want the old style but do not need a custom template or hoo k procedure, simply provide a hook procedure that always returns FAL SE.OFN_EXTENSIOND IFFERENTSpecifies that the user typed a file name extension that differs fro m the extension specified by lpstrDefExt. The function does not use t his flag if lpstrDefExt is NULL.OFN_FILE MUSTE XISTSpecifies that the user can type only names of existing files in th e File Name entry field. If this flag is specified and the user enters a n invalid name, the dialog box procedure displays a warning in a mes sage box. If this flag is specified, the OFN_PATHMUSTEXIST flag is also used. This flag can be used in an Open dialog box. It cannot be used with a Save As dialog box.OFN_FORCESHOW HIDDENW indows 2000/XP: Forces the showing of system and hidden files, thus overriding the user setting to show or not show hidden files. Ho wever, a file that is marked both system and hidden is not shown.OFN_HIDEREADONLYHides the Read Only check box.OFN_LONGNAMESFor old-style dialog boxes, this flag causes the dialog box to use long file names. If this flag is not specified, or if the OFN_ALL OW MULTISELECT flag is also set, old-style dialog boxes use short file na mes (8.3 format) for file names with spaces. Explorer-style dialog box es ignore this flag and always display long file names.OFN_NOCHANGEDIRRestores the current directory to its original value if the user cha nged the directory while searching for files.W indows NT 4.0/2000/XP: This flag is ineffective for GetOpenFile Name.OFN_NODEREFERENCELINKSDirects the dialog box to return the path and file name of the sel ected shortcut (.LNK) file. If this value is not specified, the dialog box returns the path and file name of the file referenced by the shortcut.OFN_NOLONGNAMESFor old-style dialog boxes, this flag causes the dialog box to use short file names (8.3 format). Explorer-style dialog boxes ignore this flag and always display long file names.OFN_NONETW ORKBUTTONHides and disables the Network button.OFN_NOREADONLYRETURNSpecifies that the returned file does not have the Read Only chec k box selected and is not in a write-protected directory.OFN_NOTESTFILECREATESpecifies that the file is not created before the dialog box is clos ed. This flag should be specified if the application saves the file on a create-nonmodify network share. W hen an application specifies this fl ag, the library does not check for write protection, a full disk, an ope n drive door, or network protection. Applications using this flag must perform file operations carefully, because a file cannot be reopened o nce it is closed.OFN_NOVALID ATESpecifies that the common dialog boxes allow invalid characters in the returned file name. Typically, the calling application uses a hook procedure that checks the file name by using the FILEOKSTRING me ssage. If the text box in the edit control is empty or contains nothingbut spaces, the lists of files and directories are updated. If the text box in the edit control contains anything else, nFileOffset and nFileExt ension are set to values generated by parsing the text. No default ext ension is added to the text, nor is text copied to the buffer specified by lpstrFileTitle. If the value specified by nFileOffset is less than zero, the file name is invalid. Otherwise, the file name is valid, and nFileE xtension and nFileOffset can be used as if the OFN_NOVALIDATE fla g had not been specified.OFN_OVERW RITEPROMPTCauses the Save As dialog box to generate a message box if th e selected file already exists. The user must confirm whether to over write the file.OFN_PATHMUSTEXISTSpecifies that the user can type only valid paths and file names. If this flag is used and the user types an invalid path and file name i n the File Name entry field, the dialog box function displays a warnin g in a message box.OFN_READONLYCauses the Read Only check box to be selected initially when th e dialog box is created. This flag indicates the state of the Read Onl y check box when the dialog box is closed.OFN_SHAREAW ARESpecifies that if a call to the OpenFile function fails because of a network sharing violation, the error is ignored and the dialog box ret urns the selected file name. If this flag is not set, the dialog box noti fies your hook procedure when a network sharing violation occurs for the file name specified by the user. If you set the OFN_EXPLORER fl ag, the dialog box sends the CDN_SHAREVIOLATION message to the hook procedure. If you do not set OFN_EXPLORER, the dialog box sends the SHAREVISTRING registered message to the hook procedur e.OFN_SHOW HELPCauses the dialog box to display the Help button. The hwndOw ne r member must specify the window to receive the HELPMSGSTRING registered messages that the dialog box sends when the user clicks th e Help button. An Explorer-style dialog box sends a CDN_HELP notifi cation message to your hook procedure when the user clic ks the Help button.OFN_USESHELLITE MDo not use.。

相关文档
最新文档