yichijingnian 2015-06-10 14:54 采纳率: 50%
浏览 1692
已采纳

关于 CFileDialog函数的使用问题

我在编一个CSocket的s/c模式的简单聊天程序,其中涉及到简单文件传输
接收文件的时候用到了这个另存为的函数
代码如下
CSocket cliSock;
cliSock.Create();

if(!cliSock.Connect((LPCTSTR)m_strip,1001))
{
    AfxMessageBox("未发送文件!");
    return;
}

SOCKET_STREAM_FILE_INFO StreamFileInfo;
cliSock.Receive(&StreamFileInfo,sizeof(SOCKET_STREAM_FILE_INFO));

CString type=StreamFileInfo.szFileTitle;
const   char *ty=(LPCTSTR)type;
CFileDialog  dlg(false,ty,ty);
if(IDOK!=dlg.DoModal())  return;

strcpy(StreamFileInfo.szFileTitle,dlg.GetFileName());
CFile myFile(StreamFileInfo.szFileTitle, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary);

AfxMessageBox(StreamFileInfo.szFileTitle);

UINT nSize=0;
UINT nData=0;

while (nSize < StreamFileInfo.nFileSizeLow)//分段接收
{
    byte * szBuf=new byte[1024];
    nData=cliSock.Receive(szBuf, 1024);
    myFile.Write(szBuf, nData);
    nSize+=nData;
}
SetFileTime((HANDLE)myFile.m_hFile/*系统文件句柄*/,&StreamFileInfo.ftCreationTime/*文件创建时间*/,
            &StreamFileInfo.ftLastAccessTime/*文件上一次访问时间*/,&StreamFileInfo.ftLastWriteTime)/*文件上一次修改时间*/;//设置文件的创建、访问、上次修改时间,
myFile.Close();
SetFileAttributes(StreamFileInfo.szFileTitle,StreamFileInfo.dwFileAttributes);//设置文件属性
cliSock.Close();
AfxMessageBox("接收完毕!");

}

CFileDialog  dlg(FALSE, NULL, ty,OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY, NULL);

两个问题,
第一,这个函数需要设置存储文件类型,难道我需要把所有传输文件类型都写上去么?有没有更好的办法?
第二,程序运行后接收到的文件并没有存储到另存为窗口的指定文件夹,反而存储到了我编程文件的那个文件夹下面,问题在哪里?

翻遍兜里也找不到可以悬赏的C币QAQ
小妹是初学者,跪求指点!

  • 写回答

4条回答 默认 最新

  • 快乐鹦鹉 2015-06-11 00:11
    关注

    strcpy(StreamFileInfo.szFileTitle,dlg.GetFileName());
    这里不应该用GetFileName(),它只获得文件名,不带路径。应该用GetPathName(),能够带全路径。如果你只用文件名,那么就会存储到相对路径下,就是你现在的工程路径

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题