×

builder模式 dialog alertdialog

alertdialog.builder 什么设计模式?C++中 CFileDialog类怎么用的

admin admin 发表于2022-06-25 23:01:55 浏览140 评论0

抢沙发发表评论

alertdialog.builder 什么设计模式


Builder模式:比如AlertDialog.Builder。 适配器模式:比如GridView、ListView与Adapter。 命令模式:比如Handler.post。 享元模式:比如Message.obtain。 单例模式:比如InputMethodManager.getInstance。 观察者模式:比如ContentObserver。 ...

C++中 CFileDialog类怎么用的


CFileDialog类的应用有很多,下面介绍几个最常用的应用:

构造函数原型:
CFileDialog(BOOL bOpenFileDialog,
            LPCTSTR lpszDefExt = NULL,
            LPCTSTR lpszFileName = NULL,
            DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
            LPCTSTR lpszFilter = NULL,
            CWnd* pParentWnd = NULL
           );
参数: 
bOpenFileDialg  如果为TRUE, 则创建文件打开对话框;如果为FALSE,则构造一个File Save As(另存为)对话框。 
lpszDefExt  缺省文件扩展名,如果用户在文件名编辑框中不包含扩展名,则lpszDefExt定义的扩展名自动加到文件名后。如果为NULL,则不添加扩展名。 
lpszFileName  初始显示于文件名编辑框中的文件名,如果为NULL,则不显示初始文件名。 
dwFlags  一个或多个标志的组合,使你可定制对话框。要了解这些标志的描述,可参阅联机文档“Win32 SDK”中的OPENFILENAME结构。如果你改变m_ofn.Flags结构成员,在改变中用OR操作保持缺省行为完整。 
lpszFilter  一列字符串对,指定可以应用到文件的过滤器。如果指定过滤器,仅被选择的文件显示于文件列表框中。请参阅说明部分,了解如何使用过滤器。参数格式如:
“Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||“;文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,每种文件类型间用 | 分隔,末尾用 || 指明。
pParentWnd  指向文件对话框对象的父窗口或拥有者窗口。 
要使用CFileDialog,首先用构造函数构造一个对象,当创建了一个对话框后,可以设置或修改m_ofn结构中的值来初始化对话框控件的值或状态。初始化对话框控件后,调用DoModal成员函数显示对话框并使用户输入路径和文件。
重要函数:
CString CFileDialog::GetPathName( ) 得到完整的文件名(包括目录名和扩展名)如c:/test/test1.txt 
CString CFileDialog::GetFileName( ) 得到完整的文件名(包括扩展名).如test1.txt
CString CFileDialog::GetExtName( ) 得到完整的文件扩展名,如txt 
CString CFileDialog::GetFileTitle ( ) 得到完整的文件名,不包括目录名和扩展名,如test1 
POSITION CFileDialog::GetStartPosition( ) 对于选择了多个文件的情况得到第一个文件的位置。 
CString CFileDialog::GetNextPathName( POSITION& pos ) 对于选择了多个文件的情况得到下一个文件位置,并同时返回当前文件名。但必须已经调用过POSITION CFileDialog::GetStartPosition( )来得到最初的POSITION变量。-alertdialog

打开大量文件:

使用CFileDialog类并设置OFN_ALLOWMULTISELECT标志时,OPENFILENAME结构体的lpstrFile成员是一个指向用户申请分配的缓冲区,里面接受所选的路径和文件名列表,这个列表的每一项由一个NULL隔开,最末以两个NULL结束。nMaxFile成员指明了缓冲区的大小,如果所选择的文件名的加起来的总长度超过了此值,则DoModal函数返回IDCANCEL,如果用户试图打开超过缓冲区大小的文件集的话,CommDlgExtendedError()将返回FNERR_BUFFERTOOSMALL,这时候,lpstrFile的前两个byte将会包含实际需要的缓冲区的字节数。
lpstrFile缓冲区字节数限制:   
    1 在Windows 95/98/Me下只能在ANSI下使用,且没有大小限制;
    2 在Windows NT 4.0及更早版本下,被限制在32k字节以内;
    3 在Windows 2000/XP版本下,MSDN中介绍说在ANSI下32k字节,Unicode下没有限制。但是,实际上两者都被限制在32k字节以内;-dialog


MFC中CFile类的使用


CString filepath;
CFileDialog FileDlg(TRUE);
if(IDOK==FileDlg.DoModal())
{
filepath=FileDlg.GetPathName();
GetDlgItem(IDC_FileName)-》SetWindowText(filepath);
}

f.Open(filepath,CFile::modeCreate|CFile::modeRead|CFile::modeNoTruncate);

这样就可以了吧,不知道为什么你要加双引号。。。
-alertdialog