1

このような初心者の質問は知っていますが、オンラインで答えが見つからないようです。基本的に、私は CFile ダイアログを使用していますが、それを .cpp ファイルまたはヘッダー ファイルに配置する必要があるかどうかはわかりません。前もって感謝します。

CFileDialog( BOOL bOpenFileDialog, 
             LPCTSTR lpszDefExt = NULL, 
             LPCTSTR lpszFileName = NULL, 
             DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, 
             LPCTSTR lpszFilter = NULL, 
             CWnd* pParentWnd = NULL ); 

ChrisBDによる編集

さて、FileDialogDlg.cpp にインクルードを追加し、コードを追加しました。

CFileDialog fileDlg( TRUE, 
                     NULL, 
                     NULL, 
                     OFN_ALLOWMULTISELECT | OFN_HIDEREADONLY, 
                     "All Files (.)|*.*||", 
                     this); 

// Initializes m_ofn structure 
fileDlg.m_ofn.lpstrTitle = "My File Dialog"; 

// Call DoModal 
if ( fileDlg.DoModal() == IDOK) 
{ 
    CString szlstfile = fileDlg.GetPathName(); // This is your selected file 
                                               // name with path

    AfxMessageBox("Your file name is :" +szlstfile ); 
} 

私のコンパイラはまだ大量のエラーを表示しています

4

3 に答える 3

2

「... からパラメーター 5 を変換できません」というエラーに関する私の賭けは、アプリを Unicode としてコンパイルすることです (これは良いことです)。次に、文字列パラメーターのコードで Unicode 対応の文字列リテラルを使用する必要があります。

CFileDialog fileDlg( TRUE,  
                     NULL,  
                     NULL,  
                     OFN_ALLOWMULTISELECT | OFN_HIDEREADONLY,  
                     L"All Files (.)|*.*||", // <-- I Added the leading L  
                     this);  

TEXT()マクロまたはその_T()ショートカットを使用して、ANSI/Unicode 互換にすることもできます。

CFileDialog fileDlg( TRUE,  
                     NULL,  
                     NULL,  
                     OFN_ALLOWMULTISELECT | OFN_HIDEREADONLY,  
                     _T("All Files (.)|*.*||"), // <-- _T("blah")
                     this);  
于 2011-10-25T12:48:42.600 に答える
1

ローカルで新しいインスタンスを作成し、そのプロパティを設定してから、モーダルで開くことをお勧めします。例えば:

// Create an Open dialog; the default file name extension is ".txt".
   CFileDialog fileDlg (TRUE, "txt", "*.txt", OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, szFilters, this);

   // Display the file dialog. When user clicks OK, fileDlg.DoModal() 
   // returns IDOK.
   if( fileDlg.DoModal ()==IDOK )
   {
      CString pathName = fileDlg.GetPathName();

      // Implement opening and reading file in here.
      ...
   }
于 2011-10-25T08:47:35.203 に答える
1

答えはどちらでもありません-CFileDialogクラスはすでにあなたのために宣言されています(ドキュメンテーションafxdlgs.hに従って)ので、ただ:CFileDialog

#include <afxdlgs.h>

その後、コードで使用できCFileDialogます。

于 2011-10-25T08:33:17.843 に答える