zoukankan      html  css  js  c++  java
  • CFileDialog 构造函数

    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://topic.csdn.net/u/20100521/22/850c3a11-c2c2-4df6-97e6-3404b9bb003a.html

  • 相关阅读:
    美团容器平台架构及容器技术实践
    【人物志】美团首席科学家夏华夏:不断突破边界的程序人生
    Category 特性在 iOS 组件化中的应用与管控
    浅谈大型互联网企业入侵检测及防护策略
    【基本功】深入剖析Swift性能优化
    CAT 3.0 开源发布,支持多语言客户端及多项性能提升
    安装window下的redis,redis可视化管理工具(Redis Desktop Manager)安装,基础使用,实例化项目
    .Net Core Redis的使用
    焦点IT Redis安装与配置( Windows10 或Windows server)
    用VScode配置Python开发环境
  • 原文地址:https://www.cnblogs.com/mysunnyday/p/2050763.html
Copyright © 2011-2022 走看看