网站建议:179001057@qq.com

CFileDialog

技术2022-05-11  1

转载自:http://www.cppblog.com/yefuhai/archive/2008/02/06/42568.html

CFileDialog文件选择对话框的使用:首先构造一个对象并提供相应的参数,构造函数原型如下:CFileDialog::CFileDialog( 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 是最重要的一个参数,它指明可供选择的文件类型和相应的扩展名。参数格式如: "Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||";文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,每种文件类型间用 | 分隔,末尾用 || 指明。 pParentWnd 为父窗口指针。 创建文件对话框可以使用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变量。

 

 [一些小心得]

例:CFileDialog GetFile(TRUE,NULL,NULL,OFN_FILEMUSTEXIST,"Microsoft Excel(*.xls)|*.xls|All Files(*.*)|*.*||");

CFileDialog GetFile(打开文件对话框(TRUE),扩展名(NULL),文件名(NULL),风格-文件必须存在(OFN_FILEMUSTEXIST),查看文件类型-EXCEL文件,所有文件(Microsoft Excel(*.xls)|*.xls|All Files(*.*)|*.*||);

风格的宏定义

#define OFN_READONLY                            0x00000001#define OFN_OVERWRITEPROMPT          0x00000002#define OFN_HIDEREADONLY                  0x00000004#define OFN_NOCHANGEDIR                   0x00000008#define OFN_SHOWHELP                            0x00000010#define OFN_ENABLEHOOK                       0x00000020#define OFN_ENABLETEMPLATE               0x00000040#define OFN_ENABLETEMPLATEHANDLE     0x00000080#define OFN_NOVALIDATE               0x00000100#define OFN_ALLOWMULTISELECT         0x00000200#define OFN_EXTENSIONDIFFERENT       0x00000400#define OFN_PATHMUSTEXIST            0x00000800#define OFN_FILEMUSTEXIST            0x00001000#define OFN_CREATEPROMPT             0x00002000#define OFN_SHAREAWARE               0x00004000#define OFN_NOREADONLYRETURN         0x00008000#define OFN_NOTESTFILECREATE         0x00010000#define OFN_NONETWORKBUTTON          0x00020000#define OFN_NOLONGNAMES              0x00040000     // force no long names for 4.x modules#if(WINVER >= 0x0400)#define OFN_EXPLORER                 0x00080000     // new look commdlg#define OFN_NODEREFERENCELINKS       0x00100000#define OFN_LONGNAMES                0x00200000     // force long names for 3.x modules#define OFN_ENABLEINCLUDENOTIFY      0x00400000     // send include message to callback#define OFN_ENABLESIZING             0x00800000#endif /* WINVER >= 0x0400 */#if (_WIN32_WINNT >= 0x0500)#define OFN_DONTADDTORECENT          0x02000000#define OFN_FORCESHOWHIDDEN          0x10000000    // Show All files including System and hidden files#endif // (_WIN32_WINNT >= 0x0500)

这个就不解释了,应该都能看懂吧

需要注意的是,用了CFileDialog之后,会把程序的当前路径设置成选中文件的路径所以,如果程序里有用到IO访问或者数据库访问之类的本地操作时,需要注意你的当前路径用相对路径的话就不是原来你的程序路径了,切记!

转载自:http://www.diybl.com/course/3_program/c++/cppsl/200861/118781.html

CFileDialog文件选择对话框的使用:首先构造一个对象并提供相应的参数,构造函数原型如下: CFileDialog::CFileDialog( 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 是最重要的一个参数,它指明可供选择的文件类型和相应的扩展名。参数格式如:  /"Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||/";文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,每种文件类型间用 | 分隔,末尾用 || 指明。  pParentWnd 为父窗口指针。  创建文件对话框可以使用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变量。    CColorDialog颜色选择对话框的使用:首先通过

CColorDialog::CColorDialog(

                                                                COLORREF clrInit = 0,

                                                                DWORD dwFlags = 0,

                                                                CWnd* pParentWnd = NULL

                                                     )

        构造一个对象,其中clrInit为初始颜色。通过调用DoModal()创建对话框,在返回后调用COLORREF CColorDialog::GetColor( )得到用户选择的颜色值。  CFontDialog字体选择对话框的使用:首先构造一个对象并提供相应的参数,构造函数原型如下:  CFontDialog::CFontDialog(

                                                                LPLOGFONT lplfInitial = NULL,

                                                                DWORD dwFlags = CF_EFFECTS | CF_SCREENFONTS,

                                                                CDC* pdcPrinter = NULL,

                                                                CWnd* pParentWnd = NULL

                                               );

        构造一个对象,其中参数lplfInitial指向一个LOGFONG结构(该结构介绍请见2.2 在窗口中输出文字),如果该参数设置为NULL表示不设置初始字体。pdcPrinter指向一个代表打印机设备环境的DC对象,若设置该参数则选择的字体就为打印机所用。pParentWnd用于指定父窗口。通过调用DoModal()创建对话框,在返回后通过调用以下函数来得到用户选择:  [Page]void CFontDialog::GetCurrentFont( LPLOGFONT lplf );用来获得所选字体的属性。该函数有一个参数,该参数是指向LOGFONT结构的指针,函数将所选字体的各种属性写入这个LOGFONT结构中。  CString CFontDialog::GetFaceName( ) 得到所选字体名字。  int CFontDialog::GetSize( ) 得到所选字体的尺寸(以10个象素为单位)。  COLORREF CFontDialog::GetColor( ) 得到所选字体的颜色。  BOOL CFontDialog::IsStrikeOut( ) BOOL CFontDialog::IsUnderline( ) BOOL CFontDialog::IsBold( ) BOOL CFontDialog::IsItalic( ) 得到所选字体的其他属性,是否有删除线,是否有下划线,是否为粗体,是否为斜体。 

文章出处:http://www.diybl.com/course/3_program/c++/cppsl/200861/118781.html

 

 

 

CFileDialo用法简介:http://www.chananzx.com/bbs/read.php?tid=1270

 

 OPENFILENAME结构:http://blog.csdn.net/weir75034/archive/2008/11/21/3345326.aspx

 


最新回复(0)