利用MFC向导建立一个工程,然后开始编码。这就是我通常做一个MFC工程的开始。但向导可不是一个守规矩的东西,它会为你添加很多的代码,为你设置大量的编译和链接选项。大部分时候这种工作是善意的,但是好心不一定办好事,你不好好了解它,它会给你带来很多的麻烦。

在配置一个基于OpenCasCade的程序中,我就遇到了很多麻烦。MFC向导在它所生成的View, Document等架构类中都添加了一段如下代码:

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

在Debug状态下(VS会为你默认添加一个_DEBUG的预编译项),你在该类中调用的new操作符都会被DEBUG_NEW所取代,请警惕这个行为,如果你重载过某个类的new,很可能就会由于它导致无法编译通过或运行不正确。

除此之外一些默认的设置也要注意,在VS2005中是默认支持Unicode的,它会在你的编译选项中加入/D "_UNICODE" /D "UNICODE"。这就会使得CString和你可能用到的std::string存在很麻烦的转换问题。你需要修改项目属性中General-->Character Set为not set,将其设为ununicode,保证与std::string的一致(当然你还可以运用其他的解决方法满足你的需求)。

有时候IDE也会“好心办坏事”,比如在一个解决方案中有两个工程,你为A添加B的编译依赖,在A的链接选项中就会悄悄加上对B生成的dll的引用。当你某天整理代码取消了这个依赖的时候,你突然发现莫名的出现了很多link错误。不要慌张,在A中添加上B链接项就好了,这项工作其实是你必须自己做的,只是你添加了依赖编译器非常主动的帮你完成了。

也许你看上面的错误都很简单,但如果不小心,也许有天也会像我一样深陷其中半天爬不出来。总之,在天天用VS2005建MFC工程的时候,提前做好两件事。一件是通读一遍系统默认生成的代码,做到心中有数,每一条莫名其妙的东西都要了解一下它的用途;另一件是在刚开始和改变了工程属性之后查看一下你的编译和链接命令,搞清楚它做了什么事,有时候命令行虽然难记一点,但确实是一目了然,你可以不必每天用命令行编译程序,但一定要对这些命令心如明镜,了如指掌才好。

转载于:https://www.cnblogs.com/duguguiyu/archive/2007/06/21/791161.html

了解VS2005为你的MFC程序做的一些事相关推荐

  1. 基于Dialog的MFC程序在启动时隐藏为托盘程序(四)

    这部分说一下如何加menu..如果做小气球.. mfc的menu确是不如C#活着java那么easy.. 首先在rc里添加menu资源..然后在ui界面里先设置一下你的菜单.. 在第(二)部分已经简单 ...

  2. MFC程序崩溃的友好处理

    软件总存在这样或者那样的bug. 虽然测试员已经在很努力的寻找问题,程序员也在汗流浃背的除虫,但是总会有一些情况被遗漏或者不可预测,比如用户的硬件环境.网络状况.操作系统差异等等,不一而足.而导致的结 ...

  3. MFC六大核心机制之一:MFC程序的初始化

    很多做软件开发的人都有一种对事情刨根问底的精神,例如我们一直在用的MFC,很方便,不用学太多原理性的知识就可以做出各种窗口程序,但喜欢钻研的朋友肯定想知道,到底微软帮我们做了些什么,让我们在它的框架下 ...

  4. DELPHI 开发的 OCX 控件在 MFC 程序中编辑框快捷键不好使的解决

    公司一个大型的项目中使用了 DELPHI 来开发 OCX 控件做数据库的管理,但是GIS图形系统使用 MFC 开发,最后将 OCX 嵌入到 MFC 程序中作为一个完整的系统交付用户使用,但是在使用过程 ...

  5. C++MFC编程笔记day01 MFC介绍、创建MFC程序和重写消息处理

    一.MFC概念和作用 1.全称Microsoft Foundation Class Library,我们称为微软基础类库,封闭了绝大部分的win32 Api函数,C++语法中的数据结构,程序的执行流程 ...

  6. 在MFC程序中增加控制台窗口

    MFC程序中,如果想要输出调试信息,我们一般都是TRACE或者使用LOG文件,都不是很方便,第一个需要我们在调试状态下,第二个也要配置麻烦而且不直观.而使用Console来显示调试信息应该是更好的选择 ...

  7. mfc编程 孙鑫_孙鑫VC++视频教程笔记-(3)MFC程序框架的剖析 附1-SDI程序流程图

    1,寻找WinMain人口: 在安装目录下找到MFC文件夹下的SRC文件夹,SRC下是MFC源代码. 路径:MFC|SRC|APPMODUL.CPP: _tWinMain(HINSTANCE hIns ...

  8. 浅入MFC之对话框及MFC程序的运行

    对话框的实现毕竟是很简单的.但是,自己亲手写段代码实现比什么都强,伙计,你说呢?特别对于新手来说,哦,好处太多了.同时,等你写完了,看看程序的运行,弹出自己的对话框,什么感觉,动手试一试吧,来吧.伙计 ...

  9. 在MFC程序中显示 JPG/GIF图像

    如果你是一个使用VB编程的程序员,要在程序中显示JPG或者GIF图像简直易如反掌,将图像控件拖到Form中,分分钟即可搞掂.但是C++程序员要显  示同样的图形却没有那么轻松,那么是不是要自己编写JP ...

最新文章

  1. 我玩《王者荣耀》、斗地主、打麻将,但我是正经搞AI的北大教授
  2. SpaceVim 语言模块 dart
  3. JavaScript的值传递和引用传递
  4. 如何搭建html运行环境,搭建真实的运行环境2019.4.22
  5. pandas 读取csv_「技巧」Pandas常见的性能优化方法
  6. 【车牌识别】基于matlab GUI汽车出入库收费系统(带面板)【含Matlab源码 735期】
  7. IplImage 加载图像
  8. 瑞友天翼提示这台计算机无法连接到服务器
  9. 2007年1月11日~2022年1月11日,我在 SAP 成都研究院这15年
  10. AD9361射频捷变收发器系列对比
  11. 国产分布式ETL调度管理工具 TASKCTL 8.0 核心/代理节点部署
  12. swift3.0 仿QQ音乐APP
  13. 西电2019计算机等级考试,西安电子科技大学2019《计算方法》期末考试试题
  14. 【翻译】200行代码讲透RUST FUTURES (7)
  15. 加密就像玩魔方----图文详解对称加密(DES、AES)
  16. AD7606分析讲解
  17. 浅谈对Vue框架中MVVM的认识
  18. QML <2> Canvas 自定义绘制 网易云歌单封面实现
  19. 键盘按键响应时间越快越好吗_【涨姿势】按键无冲、响应延时、键盘调速……你会看机械键盘参数指标吗?...
  20. html5怎么有漂浮的效果,实现元素漂浮在水面特效的jQuery插件

热门文章

  1. 前端笔记-利用thymeleaf隐藏显示input及label
  2. C++ opengl 对OpenGL中矩阵设置的初步认识
  3. 华为手机8.0.0怎么找到云相册_华为G9怎么找到云相册_失而复得 华为“查找手机”功能有多强大?快来了解一下......
  4. 2021年河南省高考成绩位次查询,2021年河南高考分数一分一段位次表,河南高考个人成绩排名查询方法...
  5. android webview测速,学习分享,echarts模拟宽带测速效果 附Demo演示地址!!
  6. php tp写构造函数,详细介绍ThinkPHP中类的构造函数_construct()与_initialize()的区别
  7. html5 注册协议弹出层,js制作带有遮罩弹出层实现登录注册表单特效代码分享
  8. 高温保护_【美的空调维修案例】P2压缩机高温保护 不定时出现P1过欠压保护...
  9. Rollback Protection
  10. p怎么调用python的实例属性_Python中类的声明,使用,属性,实例属性,计算属性及继承,重写...