hur.cn - 华软网

 热门搜索

求大侠指导~~~mfc用二进制方式打开文件

  作者:未知    来源:网络    更新时间:2011/5/24
我的代码
void CMy1View::OnErjinzhi() 
{
// TODO: Add your command handler code here
//UpdateData(true);
CFileDialog dlg(TRUE,NULL,NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT, "All Files (*.*)|*.*|Text files(*.txt)|*.txt|Word documents(*.doc)|*.doc||",AfxGetMainWnd());
    CString str;
    if(dlg.DoModal()==IDOK)
    {
         str= dlg.GetPathName();//获取文件名,你可以用这个参数来对文件进行操作,比如fopen()
        MessageBox(str);//这里举了个例子,用MessageBox来弹出你所选中的文件名。
    }
    CStdioFile f1;

    //CFile file;
    CString FileName=str;
     f1.Open(FileName,CFile::modeRead | CFile::typeBinary);
     f1.Close();
    AfxGetApp()->OpenDocumentFile(str);

   //  UpdateData(false);//在文本框显示
     MessageBox("读出成功!");

为何还是以文本方式输出呢?
请各位大侠指教~
---华软 网友回答---
不要用CString!
---华软网友回复---
引用 1 楼 devilkillzzz 的回复:
不要用CString!

能和我说下原因吗?
---华软网友回复---
不是CFile::typeBinary
是以二进制方式打开文件吗?

---华软网友回复---
引用 3 楼 goodjackzj 的回复:
不是CFile::typeBinary
是以二进制方式打开文件吗?


二进制方式读取,读取到内存,CString 默认把它转换为 char*字符串,然后就显示字符串了。
---华软网友回复---
那是否不能用AfxGetApp()->OpenDocumentFile(str);输出文本。
用AfxGetApp()->OpenDocumentFile(str);是不是只能以文本方式打开。




---华软网友回复---
引用楼主 goodjackzj 的回复:
  f1.Open(FileName,CFile::modeRead | CFile::typeBinary);
  f1.Close();
  AfxGetApp()->OpenDocumentFile(str);


你打开了马上又关闭,这两行代码等于什么也没做。      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。