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

  • 相关阅读:
    hdoj 2803 The MAX【简单规律题】
    hdoj 2579 Dating with girls(2)【三重数组标记去重】
    hdoj 1495 非常可乐【bfs隐式图】
    poj 1149 PIGS【最大流经典建图】
    poj 3281 Dining【拆点网络流】
    hdoj 3572 Task Schedule【建立超级源点超级汇点】
    hdoj 1532 Drainage Ditches【最大流模板题】
    poj 1459 Power Network【建立超级源点,超级汇点】
    hdoj 3861 The King’s Problem【强连通缩点建图&&最小路径覆盖】
    hdoj 1012 u Calculate e
  • 原文地址:https://www.cnblogs.com/mysunnyday/p/2050763.html
Copyright © 2011-2022 走看看