今天宠物迷的小编给各位宠物饲养爱好者分享mfc 保存设置的宠物知识,其中也会对MFC中 怎么保存文件的存储路径(mfc获取文件路径)进行专业的解释,如果能碰巧解决你现在面临的宠物相关问题,别忘了关注本站哦,现在我们开始吧!
建议添加个配置文件,把路径写到配置文件中,然后第二次打开时先读取配置文件,写到文本框里。
自己写的对话框中的某项的值,通过
void CXxxDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CXxxDlg)
DDX_Text(pDX, IDC_xx_xx, m_x);
..}
交换。
对话框中的某项的初始值
BOOL CXxxDlg::OnInitDialog()
{
CDialog::OnInitDialog();
...在这里设置
}
----------
标准文件输入输出对话框文件名 用到 OPENFILENAME 结构。
你把更新的文件名存起来,调用对话框时用这个(含有你的文件名的)结构就可以了。
也可以用能编辑16进制的工具去掉的,有一个选项。\r\n其实BOM格式的只是前面加了两个前导字节。有些编辑器就是没有这个功能,可以保存为UTF-8 NO BOM格式。\r\n\r\n看你用什么编辑器了使用notepad++编辑器
用CFile,CArchive等都可以保存, 做一个按钮保存,另一个装入,即可。 或者在对话框退出时自动保存,在初始化时自动装入。 无需按行保存,就用一个变量即可 例如:对话框开启时写:BOOL CTest1Dlg::OnInitDialog(){//系统自动产生的代码省略。。。 // TODO: Add extra initialization hereCFile mFile; if(mFile.Open("user.txt",CFile::modeRead)) { CArchive ar(&mFile,CArchive::load); ar>>m_Name>>m_Age; ar.Close(); UpdateData(FALSE); }return TRUE; }退出时:void CTest1Dlg::OnExit() { // TODO: Add your control notification handler code here CFile mFile; if(mFile.Open("user.txt",CFile::modeWrite|CFile::modeCreate)) { CArchive ar(&mFile,CArchive::store); UpdateData(TRUE); arOnOK();} 补充:微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。
GetCurrentDirectory获取的是当前路径,并不是程序文件本身所在的路径,应用程序的当前路径是可以通过SetCurrentDirectory来改变的,当你调用CFileDialog打开文件以后,这个类就会调用SetCurrentDirectory来修改当前路径,所以你在保存时使用GetCurrentDirectory获取到的肯定是上次打开文件的那个路径,要想不改变当前路径,可以参考楼上兄弟的做法,但不推荐这样做,因为你下次打开文件的时候可能还是希望在上次打开的地方来打开,这本身是一种比较人性化的功能
如果你想获取程序本身所在的路径,可用API函数GetModuleFileName来获取,这个函数获取到的就是应用程序所在的路径,无论你是否确定当前路径是否会被改变,都建议不要用GetCurrentDirectory来获取应用程序的路径,因为不可预知会改变当前路径的因素太多了
要注意区分当前路径和应用程序所在路径,例如,你给程序创建一个快捷方式,快捷方式中的起始位置那一项设置的就是当前路径,与你目标程序的路径可以不一样;同样,在VC编译器里指定的工作路径也是当前路径,这个路径同样可以与你在命令里面设置的路径不一样,都是可以修改的
这个貌似需要保存成一个配置文件或者保存在注册表里吧,具体的可以baidu一下
需要在本地保存一个配置文件。配置文件名随便起,扩展名也不限。只要把设置信息放到文件里。当对话框每次打开的时候也就是初始化函数运行的时候,首先打开这个配置文件,读取配置内容。然后修改字体颜色,最后再进行显示。。
TCHAR szFilter[] = _T("文本文件(*.txt)|*.txt|Word文件(*.doc)|*.doc|所有文件(*.*)|*.*||");
// 构造保存文件对话框
CFileDialog fileDlg(FALSE, _T("doc"), _T("my"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, this);
CString strFilePath;
CStdioFile file;
CString a;
GetDlgItemText(IDC_SAVE_EDIT,a);
// 显示保存文件对话框
if (IDOK == fileDlg.DoModal())
{
// 如果点击了文件对话框上的“保存”按钮,则将选择的文件路径显示到编辑框里
strFilePath = fileDlg.GetPathName();
file.Open(strFilePath, CFile::modeCreate | CFile::modeWrite | CFile::typeText);
file.WriteString(a); //写入edit box中的数据
file.Close();
//SetDlgItemText(IDC_SAVE_EDIT, strFilePath);
}
我用的VS2010,你作为参考 吧!
本文由宠物迷 百科常识栏目发布,非常欢迎各位朋友分享到个人朋友圈,但转载请说明文章出处“MFC中 怎么保存文件的存储路径”