MFC 保存文件路径问题

我定义了一个全局的CStringFilePath,用来存放从一个“导出”按钮获得的路径。现在有3个函数都需要保存文本文档到这个路径,但需要每个文本的默认名字都不一样。怎么... 我定义了一个全局的 CString FilePath,用来存放从一个“导出”按钮获得的路径。
现在有3个函数都需要保存文本文档到这个路径,但需要每个文本的默认名字都不一样。
怎么做?

新手刚上路,麻烦大侠们讲解得详细一点。
先谢谢各位了~
展开
 我来答
德温瑜We
2011-05-19 · TA获得超过897个赞
知道小有建树答主
回答量:1722
采纳率:0%
帮助的人:751万
展开全部
GetCurrentDirectory获取的是当前路径,并不是程序文件本身所在的路径,应用程序的当前路径是可以通过SetCurrentDirectory来改变的,当你调用CFileDialog打开文件以后,这个类就会调用SetCurrentDirectory来修改当前路径,所以你在保存时使用GetCurrentDirectory获取到的肯定是上次打开文件的那个路径,要想不改变当前路径,可以参考楼上兄弟的做法,但不推荐这样做,因为你下次打开文件的时候可能还是希望在上次打开的地方来打开,这本身是一种比较人性化的功能
如果你想获取程序本身所在的路径,可用API函数GetModuleFileName来获取,这个函数获取到的就是应用程序所在的路径,无论你是否确定当前路径是否会被改变,都建议不要用GetCurrentDirectory来获取应用程序的路径,因为不可预知会改变当前路径的因素太多了
要注意区分当前路径和应用程序所在路径,例如,你给程序创建一个快捷方式,快捷方式中的起始位置那一项设置的就是当前路径,与你目标程序的路径可以不一样;同样,在VC编译器里指定的工作路径也是当前路径,这个路径同样可以与你在命令里面设置的路径不一样,都是可以修改的
可以叫我表哥
2015-08-02 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
采纳数:25897 获赞数:1464984
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。

向TA提问 私信TA
展开全部
该段程序实现保存文件,并且能够在保存前改变保存路径,并能调用CDocument::OnSaveDocument实现串行输入。
代码如下:
void CLADDoc::OnFileSave1() //保存按钮的响应函数
{
// TODO: Add your command handler code here
CMainFrame *pMain =(CMainFrame *)AfxGetMainWnd();

const char pszFilter[] = _T("梯形图程序 (*.lad)|*.lad||");
CFileDialog dlgSave( FALSE, //FALSE为保存
_T(".lad"), //自动加上的扩展名
_T("NoName.lad"), //默认保存的文件名
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,pszFilter, pMain);

dlgSave.m_ofn.lpstrInitialDir = filePath ;

CString fileDlgName;

if (dlgSave.DoModal() == IDOK)
{
fileDlgName = dlgSave.GetPathName();
}

this->SetPathName(fileDlgName);
this->OnSaveDocument(fileDlgName);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ljh_beer
2011-05-15 · 超过24用户采纳过TA的回答
知道答主
回答量:69
采纳率:0%
帮助的人:65.4万
展开全部
CString FilePath 只保存路径即可
每个函数中在计算出实际路径

function1(){
filename = FilePath + "\" + defaultname1;
.....
.....
savefile(filename);
}
function2(){
filename = FilePath + "\" + defaultname2;
.....
.....
savefile(filename);
}
function3(){
filename = FilePath + "\" + defaultname3;
.....
.....
savefile(filename);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式