怎么自定义MFC程序的保存文件名称?
来源:互联网 发布:js 精度丢失 知乎 编辑:程序博客网 时间:2024/05/01 07:53
(转自:http://wenwen.soso.com/z/q274419303.htm)
用MFC的默认创建的单文档程序,菜单栏里的“文件->保存(或打开)”里的类型都是“所有文件(*.*)”,怎么样才能自定义文件后缀名呢?
在你创建单文档程序的第四步,哪里不是有个advanced选项吗。单击它,然后再如图所示输入文件的后缀名,如txt,然后点Finish,效果如图,还有一种方法就是打开你的资源视图,点击字符串表,哪里不是有个ID为IDR_MAINFRAME,默认是Test\n\nTest\n\n\nTest.Document\nTest Document(注:Test是你输入的工程名),你可以在第三个\n后面输入,显示在保存类型的内容,在第四个\n后面输入过滤符,如.txt。
至于通过代码修改的,我想不起来了,应该在CDocument类中吧,去查查MSDN吧,。
- 追问:
- 啊,我已经把整个程序都写好了,重新写太麻烦了,有其他改动办法么
- 回答:
打开你的资源视图,点击字符串表,哪里不是有个ID为IDR_MAINFRAME,默认是Test\n\nTest\n\n\nTest.Document\nTest Document(注:Test是你输入的工程名),dd\nguigui\ntxt\n.txt\n.txt\nMDI.Document\nMDI 跟着这个格式改,就可以了,没办法用代码实现。因为消息响应函数OnFileOpen中定义的文件对话框是局部对象。它是用IDR_MAINFRAME标示的字符串资源去填充CFileDialog的构造函数。根本无法获取到指针,看了半天的源代码,,晕啊、。
- 补充:
忘记给你把源代码发出来了,OnFileOpen是消息响应函数,响应你打开文件对话框的,保存对话框也一样的道理。下面是MFC的源代码。仔细看我加黑的那些代码调用,
afx_msg void OnFileOpen();//这里是响应函数的申明,
void CWinApp::OnFileOpen()
{
ASSERT(m_pDocManager != NULL);
m_pDocManager->OnFileOpen();
}你只看调用关系。这里调用文档类的OnFileOpen();void CDocManager::OnFileOpen()//文档类的OnFileOpen
{
// prompt the user (with all document templates)
CString newName;
if (!DoPromptFileName(newName, AFX_IDS_OPENFILE,
OFN_HIDEREADONLY | OFN_FILEMUSTEXIST, TRUE, NULL))
return; // open cancelledAfxGetApp()->OpenDocumentFile(newName);
// if returns NULL, the user has already been alerted
}//文档类里面只看它调用的DoPromptFileName方法,代码如下。
BOOL CDocManager::DoPromptFileName(CString& fileName, UINT nIDSTitle, DWORD lFlags, BOOL bOpenFileDialog, CDocTemplate* pTemplate)
{
CFileDialog dlgFile(bOpenFileDialog);//仔细看这里CString title;
VERIFY(title.LoadString(nIDSTitle));//这里加载字符串资源哦。。仔细看。dlgFile.m_ofn.Flags |= lFlags;
CString strFilter;
CString strDefault;
if (pTemplate != NULL)
{
ASSERT_VALID(pTemplate);
_AfxAppendFilterSuffix(strFilter, dlgFile.m_ofn, pTemplate, &strDefault);
}
else
{
// do for all doc template
POSITION pos = m_templateList.GetHeadPosition();
BOOL bFirst = TRUE;
while (pos != NULL)
{
CDocTemplate* pTemplate = (CDocTemplate*)m_templateList.GetNext(pos);
_AfxAppendFilterSuffix(strFilter, dlgFile.m_ofn, pTemplate,
bFirst ? &strDefault : NULL);
bFirst = FALSE;
}
}// append the "*.*" all files filter
CString allFilter;
VERIFY(allFilter.LoadString(AFX_IDS_ALLFILTER));
strFilter += allFilter;
strFilter += (TCHAR)'\0'; // next string please
strFilter += _T("*.*");
strFilter += (TCHAR)'\0'; // last string
dlgFile.m_ofn.nMaxCustFilter++;dlgFile.m_ofn.lpstrFilter = strFilter;
dlgFile.m_ofn.lpstrTitle = title;
dlgFile.m_ofn.lpstrFile = fileName.GetBuffer(_MAX_PATH);int nResult = dlgFile.DoModal();
fileName.ReleaseBuffer();
return nResult == IDOK;
}在上面看见了CFileDialog吗,程序员一般会,会心的一笑,因此证明,要改文件对话,只能通过资源,IDR_MAINFRAME改动。
- 怎么自定义MFC程序的保存文件名称?
- android 录像,摄影自定义保存的文件名称
- 自定义MFC打开/保存对话框的扩展名
- 自定义MFC打开保存对话框的扩展名
- Inno Setup自定义卸载文件名称的脚本
- 怎么删除文件名称过长的文件(我的随记)
- MFC怎么获取自定义控件的ID号
- 怎么把android程序崩溃的信息保存起来
- 我的YUV播放器MFC小笔记:解析文件名称
- MFC下图片保存的截屏程序
- MFC内存中的图片怎么保存?
- 怎么看懂一个MFC程序?
- vs2008下的MFC程序,怎么检测内存泄露
- MFC 图形的保存
- 自定义OpenSSL编译输出的DLL库文件名称
- [原创]VB程序 - 处理字符和文件名称的代码模块
- 把MFC程序保存为图片 vc ++
- 把MFC程序保存为图片 vc ++
- 求最大公约数的两种方法
- 卡卡游戏引擎之快速入门
- 输出旋转数组的最小值
- MySQL那点事之插入、更新与删除数据
- Struts2的@Action和@Actions的区别
- 怎么自定义MFC程序的保存文件名称?
- STM32 BIT_BAND 位带别名区使用入门
- 细胞
- 国家队ACM论文分类整理(转载)
- 求二叉树中节点的最大距离算法(C)
- 自己训练SVM分类器进行HOG行人检测
- anroid中ScrollView嵌套ListView
- 太极拳透劲的原理推测
- 斐波那契数列算法 Fibonacci Search 优化二分法查找算法