本文目录一览:
- 1、MFC 保存文件路径问题
- 2、MFC 添加以用户名为名的文件夹(注意:是MFC编程)
- 3、如何编程实现MFC创建新文件夹
- 4、MFC保存文件的扩展名
- 5、MFC的怎么进行文件保存
- 6、mfc如何以对话框的内容命名并创建txt文件
MFC 保存文件路径问题
GetCurrentDirectory获取的是当前路径,并不是程序文件本身所在的路径,应用程序的当前路径是可以通过SetCurrentDirectory来改变的,当你调用CFileDialog打开文件以后,这个类就会调用SetCurrentDirectory来修改当前路径,所以你在保存时使用GetCurrentDirectory获取到的肯定是上次打开文件的那个路径,要想不改变当前路径,可以参考楼上兄弟的做法,但不推荐这样做,因为你下次打开文件的时候可能还是希望在上次打开的地方来打开,这本身是一种比较人性化的功能
如果你想获取程序本身所在的路径,可用API函数GetModuleFileName来获取,这个函数获取到的就是应用程序所在的路径,无论你是否确定当前路径是否会被改变,都建议不要用GetCurrentDirectory来获取应用程序的路径,因为不可预知会改变当前路径的因素太多了
要注意区分当前路径和应用程序所在路径,例如,你给程序创建一个快捷方式,快捷方式中的起始位置那一项设置的就是当前路径,与你目标程序的路径可以不一样;同样,在VC编译器里指定的工作路径也是当前路径,这个路径同样可以与你在命令里面设置的路径不一样,都是可以修改的-mfc自动命名保存文件夹
MFC 添加以用户名为名的文件夹(注意:是MFC编程)
我这几天搞好也在解决关于MFC文件夹操作的问题,其实这个功能很容易就可以搞掂的了。直接调用一个CreateDirectory函数就可以了。
这个函数的原型系CreateDirectory(path,NULL);其中path你想要创建的文件夹的绝对(全)路径,类型可以为字符数组,也可以为CString类型的字符串,第二个参数可以不管,大部分情况下都是默认为NULL;还要注意的是,例如path-mfc自动命名保存文件夹
=
“C:\\wcody\\cwei\\456789”;原则上就是要求在c盘下创建一个名为wcody的文件夹,再在wcody中创建一个名为cwei的文件夹,再在cwei的文件夹中创建一个名为456789的文件夹。想要完成这个过程就要分成三个部分来完成,如果wcody和cwei文件夹是存在的话直接就可以用CreateDirectory(path,NULL);创建456789文件夹,如果wcody和cwei文件夹是不存在的话,是不能直接创建456789文件夹的。你先要创建wcody文件夹,再创建cwei文件夹。原理同上!-mfc自动命名保存文件夹
总的来说就是调用CreateDirectory(path,NULL);这个函数创建的只是最深一层的文件夹,前面的路径没有存在的话是创建不了最深一层的。
如何编程实现MFC创建新文件夹
CString strFolderPath="c:\\test"
// 判断路径是否存在
if (!PathIsDirectory(m_strFolderPath) )
{
CString strMsg;
strMsg.Format ("指定路径\"%s\"不存在,是否创建?", m_strFolderPath);
if (AfxMessageBox(strMsg, MB_YESNO) == IDYES)
{
if (!CreateDirectory(m_strFolderPath, NULL))//here
{
strMsg.Format ("创建路径\"%s\"失败!是否继续?", m_strFolderPath);
if (AfxMessageBox(strMsg, MB_YESNO) == IDYES)
return;
}
}
}
其实就是一个函数:CreateDirectory
MFC保存文件的扩展名
修改资源的字符串
IDR_SCRIBTYPE "\nScrib\nScrib\nScribble Files(*.scb)\n.SCB\nScribble.Document\nScrib Document"-mfc自动命名保存文件夹
这个字符串以"\n"分隔为7个子串
Main frame caption //MDI不需要指定,以IDR_MAINFRAME为默认值
Doc type name
File new name(OLE short name)
Filter name
File extension //添上这个就行,上面.SCB的位置
File type ID
File type name(OLE long name)
如果要支持从文件双击打开程序,在CxxxApp::InitInstance()加上下面的就行
EnableShellOpen();
RegisterShellFileTypes(TRUE);
MFC的怎么进行文件保存
用CFile,CArchive等都可以保存, 做一个按钮保存,另一个装入,即可。
或者在对话框退出时自动保存,在初始化时自动装入。 无需按行保存,就用一个变量即可
例如:对话框开启时写:
BOOL CTest1Dlg::OnInitDialog()
{
//系统自动产生的代码省略。。。
// TODO: Add extra initialization here
CFile mFile;
if(mFile.Open("user.txt",CFile::modeRead))
{
CArchive ar(mFile,CArchive::load);
arm_Namem_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);
arm_Namem_Age;
ar.Close();
}
this-OnOK();
}
补充:微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。-mfc自动命名保存文件夹
mfc如何以对话框的内容命名并创建txt文件
应该是你的路径写法不正确造成的,是不是没有注意'\'的写法,在C++里要表示'\'就要写成'\\'。
比如表示"C:\1\2.txt",就应该写成"C:\\1\\2.txt"
可以用SHFileOperation这个API函数
下面的例子将“C:\1”目录下的所有文件(包括文件夹)拷贝到“C:\2”目录中(C:\2可以不存在):
SHFILEOPSTRUCT shFileOp = ;
shFileOp.hwnd = NULL;
shFileOp.wFunc = FO_COPY;
shFileOp.pFrom = "C:\\1";
shFileOp.pTo = "C:\\2";
::SHFileOperation(shFileOp);
注意:shFileOp.pFrom和shFileOp.pTo要使用全路径,可以使用通配符,如:
shFileOp.pFrom = "C:\\1\\*.txt";
其他不变,则将拷贝所有的TXT文档。
*********************************************
网上邻居里好像不能新建文件夹吧?它不能算作文件夹。
要将CEdit里的内容写入TXT文件:
按住CTRL,双击Edit控件,在弹出的对话框中设置一个CString变量与控件关联。
以后调用Updatedata()就可以得到Edit中的内容了。
比如,Edit与m_strText关联,则代码如下:
void CFileManipulateDlg::Onbackup()
{
//获得当前时间并格式化为字符串
CString strTime = CTime::GetCurrentTime().Format("%Y-%m-%d");
//路径,我用的根目录是"c:",你可以根据自己需要修改,
//如果就是程序当前的目录,则用相对路径,直接写文件夹的名称
CString strPath = "C:\\" + strTime;
//建立文件夹
CreateDirectory(strPath, NULL);
//txt文件路径,TXT文档名为backup.txt
CString strTxtPath = strPath + "\\backup.txt";
//新建一个空的txt文档
CFile txtfile(strTxtPath, CFile::modeCreate | CFile::modeWrite);
//后面可对TXT文档进行写操作,参见CFile类
//调用完后UpdateData(),m_strText的值就会变成Edit框中的内容了
UpdateData();
//CString strTxt = "Hello,world!";
//将Edit中的内容写入Txt文档
txtfile.Write((LPCTSTR)m_strText, m_strText.GetLength());
//最后关闭Txt文档
txtfile.Close();
}
你的串号我已经记下,采纳后我会帮你制作