zoukankan      html  css  js  c++  java
  • CFileDialog用法总结

    转自:https://www.cnblogs.com/kex1n/p/3595800.html

    CFileDialog经常用,但经常忘,现归纳整理下,方便今后查询。

    例子:

    CFileDialog openDlg( TRUE, "Material File(*.material)|*.material", NULL,
    
           OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
    
           "Material File(*.material)|*.material||", this);

    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                       指明一些特定风格。 (默认OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT)

    lpszFilter                     指明可供选择的文件类型和相应的扩展名。

    pParentWnd                为父窗口指针。

    其中,扩展名应遵循下面的格式:

    "Chart Files (*.xlc)|*.xlc| Worksheet Files (*.xls)|*.xls| Data Files (*.xlc;*.xls)|*.xlc ; *.xls| All Files (*.*)|*.*||";

    文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,每种文件类型间用 | 分隔,末尾用 || 指明。

    另外过滤器也可以这样设置:

    dl.m_ofn.lpstrFilter = _T("xls文件\0*.xls\0csv文件\0*.csv\0xlsx文件\0*.xlsx\0\0");

    注意有时候用 | 字符分隔时会出现错误,这时候可以使用 \0 字符

    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变量。

    dwFlags的风格有:

    #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    

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

  • 相关阅读:
    springcloud之Feign(五)
    ElasticSearch
    SpringCloud之Hystrix介绍
    SpringCloud之Ribbon负载均衡(四)
    springcloud之Eureka集群配置(三)
    Problem08 输入数字求和
    Problem07 处理字符串
    Problem06 求最大公约数及最小公倍数
    Problem05 判断分数等级
    Problem04 分解质因数
  • 原文地址:https://www.cnblogs.com/freedomworld/p/12266299.html
Copyright © 2011-2022 走看看