忽然无聊的想给自己写的程序保存的文件使用自己的名字简写作为后缀,于是有了下文。


IDR_MAINFRAME格式介绍

IDR_MAINFRAME字符串资源中包含7个子串,分别以/n结束,即如下格式:

<windowTitle>/n<docName>/n<fileNewName>/n<filterName>/n<filterExt>/n<regFileTypeId>/n<regFileTypeName>/n

  1. CDocTemplate::windowTitle,主窗口标题栏上的字符串,MDI程序不需要指定,将以IDR_MAINFRAME字符串为默认值。
  2. CDocTemplate::docName,缺省文档的名称。如果没有指定,缺省文档的名称是无标题。
  3. CDocTemplate::filterName,文档类型的描述和一个适用于此类型的通配符过滤器。这个字符串将出现在“File/Open”对话框中的文件类型列表框中。要和CDocTemplate::filterExt一起使用。
  4. CDocTemplate::filterExt,文档的扩展名。如果没有指定,就不能够在“File/Open”对话框中处理这种文档。要和CDocTemplate::filterName一起使用。
  5. CDocTemplate::regFileTypeId,如果你以::RegisterShellFileTypes向系统的注册表注册文件类型,此值会出现在HEY_CLASSES_ROOT之下成为其子项,并仅供Windows内部使用。如果没有指定,这种文件类型就无法注册。
  6. CDocTemplate::regFileTypeName,这也是存储在注册表中的文件类型名称。它会显示于程序中用以访问注册表的对话框内。

单文档自定义保存文件名

  1. 在新建项目时,其中有一步会有advanced选项,可在里面设置扩展名。
  2. 如果项目已经建立,而我们又是使用系统自带的文件保存,则可以在资源视图->String Table->String Table,找到ID为IDR_MAINFRAME项进行修改。在第三个\n和第四个\n后输入你需要的过滤符。

    如:CADProject\n\nCADProject\ntxt\n.txt\nCADProject.Document\nCADProject.Document(其中CADProject是项目名称,扩展名txt)
  3. 添加多种扩展名.如添加txt和ini格式:CADProject\n\nCADProject\nFile(*.txt;*.ini)\n.txt;.ini\nCADProject.Document\nCADProject.Document。【注】filterExt使用分号";"隔开,分号后不带空格

参考1

参考2

参考3


修改ToolBar图标导致DEBUG ASSERTION错误

由于toolbar上的图标是通过复制粘贴的,于是在MainFrame中:

        if (CMFCToolBar::GetUserImages() == NULL)
{
// load user-defined toolbar images
if (m_UserImages.Load(_T(".\\UserImages.bmp")))
{
CMFCToolBar::SetUserImages(&m_UserImages);
}
}

出现debug assertion failed错误,解决办法,修改为:

        if (CMFCToolBar::GetUserImages() == NULL)
{
// load user-defined toolbar images
if (m_UserImages.Load(_T(".\\UserImages.bmp")))
{
m_UserImages.SetImageSize(CSize(16, 16), FALSE);
CMFCToolBar::SetUserImages(&m_UserImages);
}
}

具体原因:

参考4

参考5

MFC单文档自定义扩展名及添加图标报Assertion错误的更多相关文章

  1. MFC单文档

    一.创建并运行MFC单文档程序 1.创建单文档程序 这里使用的是VS2017.首先,打开VS2017,选择文件->新建->项目,然后选择Visual C++ -> MFC /ATL& ...

  2. VC++ MFC单文档应用程序SDI下调用glGenBuffersARB(1, &pbo)方法编译通过但执行时出错原因分析及解决办法:glewInit()初始化的错误

    1.问题症状 在VC++环境下,利用MFC单文档应用程序SDI下开发OpenGL程序,当调用glGenBuffersARB(1, &pbo)方法编译通过但执行时出错,出错代码如下: OpenG ...

  3. VC-基础:MFC单文档程序架构解析

    MFC单文档程序架构解析 这里我以科院杨老师的单文档程序来分析一下MFC单文档的程序架构,纯属个人见解,不当之处烦请指教! 首先我们了解到的是 图(一) theApp 是唯一一个在程序形成的时候就存在 ...

  4. MFC单文档程序架构解析

    MFC单文档程序架构解析 MFC单文档程序架构解析 这里我以科院杨老师的单文档程序来分析一下MFC单文档的程序架构,纯属个人见解,不当之处烦请指教! 首先我们了解到的是 图(一) theApp 是唯一 ...

  5. MFC单文档程序结构

    MFC单文档程序结构三方面: Doc MainFrame View

  6. MFC单文档框架分析及执行流程(转)

    原文转自 https://blog.csdn.net/u011619422/article/details/40402705 首先来分析一下MFC单文档类的结构: 它包括如下几个类: CAboutDl ...

  7. MFC单文档视图程序简介

    在视图应用程序中,应用程序的数据由文档对象代表,数据的视图由视图对象代表.MFC的Cdocument类是文档对象的基类,Cview类是视图对象的基类.应用程序的主窗口,其操作功能在MFC的Cframe ...

  8. 【2016.3.30项目技术记录】]VS2010自动生成MFC单文档框架程序的修改:去除属性框,在CViewTree类中添加鼠标单击响应

    转自http://blog.csdn.net/yanfeiouc2009/archive/2010/06/07/5653360.aspx 手头上有个东西要用到单文档,由于想省事,直接用VS2010做了 ...

  9. 多线程串口编程工具CserialPort类(附VC基于MFC单文档协议通讯源程序及详细编程步骤)

    老有人觉得MSComm通讯控件很土,更有人大声疾呼:忘了它吧.确实当我们对串口编程有了一定的了解后,应该用API函数写一个属于自己的串口程序,由于编程者对程序了解,对程序修改自如.但我一直没有停止过用 ...

随机推荐

  1. Android - 硬件抽象层(HAL)

    以下资料摘录整理自老罗的Android之旅博客,是对老罗的博客关于Android底层原理的一个抽象的知识概括总结(如有错误欢迎指出)(侵删):http://blog.csdn.net/luosheng ...

  2. select 响应时间 js

    HTML form select表单标签案例代码如下: 跳转菜单的需要放在head头部标签内的JS脚本代码:<script type="text/javascript"> ...

  3. Struts2与jQuery.ajax()的结合

    1.客户端是通过$.ajax()方法向login.action传递数据:2.其中action中execute()方法返回值为空,并通过[ServletActionContext.getResponse ...

  4. bootstrap字体图标

    bootstrap字体图标 http://v3.bootcss.com/components/ <!DOCTYPE HTML> <html> <head> < ...

  5. Asp.Net Mvc MapRoute .html不起作用(转)

    RegisterRoutes 注册路由示例配置: public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRo ...

  6. Android学习手记(4) BroadcastReceiver监听电池信息

    Android 中,Broadcast是一种在应用程序之间进行传输信息的机制.BroadcastReceiver对发送过来的Broadcast进行过滤和响应.根据这种机制,我们可以获取电池现有电量等信 ...

  7. maven发布时在不同的环境使用不同的配置文件

    在开发时,不同的环境总会使用到不同的配置.如本地,测试,预发布,发布等环境,像数据库这些都要使用到不同的配置.如果手动改的话肯定会十分的麻烦. 还好maven提供的功能能够帮我们解决这个问题. 我们通 ...

  8. JavaScript 类、构造函数、原型

    类.构造函数.原型  :本质均为函数 利用的原理是:词法作用域,调用对象及作用域链  闭包  属性查找方式    设计和new运算符一起使用的函数叫做构造函数. 构造函数的工作:初始化一个新创建的对象 ...

  9. 小学生之解析XML应用

    1.什么是XML? 解析:XML:Extensible Markup Language(可扩展标记语言) HTML:HyperLink Text  Markup Language(超文本标记语言)   ...

  10. VS2013打包与部署

    近期做一个配置工具,完事了想打包一下:由于用的是VS2013:与之前的略有不同,简单的做了一下,在这里分享一下,直接看吧: 首先  是自己新建一个项目 ,我的WPF应用程序 第二步:右键解决方案添加新 ...