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;