Где я должен объявить экземпляр в C++?
Такой вопрос новичка я знаю, но я не могу найти ответы в Интернете. В основном я использую диалог 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 );
}
Мой компилятор все еще показывает груз ошибок
3 ответа
Моя ставка на ошибку "невозможно преобразовать параметр 5 из..." состоит в том, что вы компилируете свое приложение как Unicode (что хорошо). Затем вы должны использовать строковые литералы с поддержкой Unicode в вашем коде для строковых параметров:
CFileDialog fileDlg( TRUE,
NULL,
NULL,
OFN_ALLOWMULTISELECT | OFN_HIDEREADONLY,
L"All Files (.)|*.*||", // <-- I Added the leading L
this);
Вы также можете решить сделать его совместимым с ANSI/Unicode, используя TEXT()
макрос или его _T()
ярлык.
CFileDialog fileDlg( TRUE,
NULL,
NULL,
OFN_ALLOWMULTISELECT | OFN_HIDEREADONLY,
_T("All Files (.)|*.*||"), // <-- _T("blah")
this);
Я бы посоветовал вам создать новый экземпляр локально, установить его свойства, а затем открыть его модально. Например:
// 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.
...
}
Ответ ни один - CFileDialog
класс уже объявлен для вас в afxdlgs.h
(согласно CFileDialog
документация) так просто:
#include <afxdlgs.h>
Тогда вы можете использовать CFileDialog
в вашем коде.