關於開啟檔案夾函數的用法 OpenFileDialog(轉載)

來源:互聯網
上載者:User

標籤:tar   ext   com   get   使用   檔案   

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

#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訪問或者資料庫訪問之類的本地操作時,需要注意你的當前路徑用相對路徑的話就不是原來你的程式路徑了,切記!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.