×

mfc自动命名保存文件夹

mfc自动命名保存文件夹(mfc文件重命名)

admin admin 发表于2023-03-24 23:32:10 浏览57 评论0

抢沙发发表评论

本文目录一览:

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();

}

你的串号我已经记下,采纳后我会帮你制作