m_editFile 为与编辑框控件相关联的字符串型变量。
1. 用CFileDialog创建打开文件对话框,并将要打开的文件路径显示在编辑框内:
</pre><p><pre name="code" class="cpp"> UpdateData(TRUE);
// 打开文件对话框样式设置
CFileDialog FileOpenDialog(TRUE);
FileOpenDialog.m_ofn.Flags = OFN_ENABLEHOOK|OFN_EXPLORER;
CString strFilter;
strFilter = _T("TXT");
strFilter += (TCHAR)'\0';
strFilter += _T("*.txt");
strFilter += (TCHAR)'\0';
CString allFilter;
VERIFY(allFilter.LoadString(AFX_IDS_ALLFILTER));
strFilter += allFilter;
strFilter += (TCHAR)'\0';
strFilter += _T("*.*");
strFilter += (TCHAR)'\0';
FileOpenDialog.m_ofn.lpstrFilter = strFilter;
FileOpenDialog.m_ofn.lpstrTitle = "Download Filename...";
// Set up the default to match a file that is open.....
CString sFileName;
sFileName.Empty();
if ((((CMDIFrameWnd *) AfxGetMainWnd())->MDIGetActive()) != NULL)
sFileName = (((CMDIFrameWnd *) AfxGetMainWnd())->MDIGetActive())->GetActiveDocument()->GetTitle();
if (!sFileName.IsEmpty())
{
if (sFileName.Find('.') != -1)
sFileName = sFileName.Left(sFileName.Find('.'));
sFileName += _T(".hex");
strcpy(FileOpenDialog.m_ofn.lpstrFile,LPCTSTR(sFileName));
}
// 选择要打开的文件后
BOOL bResult = FileOpenDialog.DoModal() == IDOK ? TRUE : FALSE;
if (bResult)
{
m_editFile = FileOpenDialog.GetPathName(); // 获取要打开文件的路径
UpdateData(FALSE); // 将路径在编辑框中显示
}
创建打开文件对话框,上例是一种方法,还可以使用下面的方法:
CFileDialog mFileDlg (TRUE,NULL,NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT, "All Files (*.*) |*.* ||",AfxGetMainWnd());
//倒数第二个参数,定义打开文件类型
//代表所有文件"All Files (*.*) |*.*||
// OFN_ALLOWMULTISELECT表示可以复选文件
//第一个参数为true是打开对话框,为false是保存对话框
///
//为m_ofn.lpstrFile分配一块内存
///
CString str(" ",10000);
mFileDlg.m_ofn.lpstrFile=str.GetBuffer(10000);
str.ReleaseBuffer();
///
//显示打开/保存对话框
if(mFileDlg.DoModal()!=IDOK)
{
return;
}
2. 选择好要打开的文件后,打开文件,并将文件内的内容放入字符串buffer
2.1 获取文件大小
HANDLE fileHand;
DWORD fileSize;
fileHand = CreateFile(m_editFile,0,0,0,OPEN_EXISTING,0,0); // m_editFile为文件路径,第一步第一个示例中获得
fileSize = GetFileSize(fileHand,0);
2.2 读取文件放入自动设置大小的buffer.
注意:这个buffer必须为char型。
char * bufFile = new char [fileSize]; // 文件读取buffer
CFile file;
file.Open(m_editFile,CFile::modeRead);
file.Read(bufFile,fileSize);
2.3 将文件存入字符串buffer
CString sFile;
sFile = bufFile;
参考示例: PC_F340(T600)项目的Configure对话框