C++(MFC)编程一些注意事项
一·书写问题
1.括号:左右大括号最好都放在左侧,这样可以很清楚大括号的看清配对情况以及作用域,便于检查也不易出错。
2.强制转换:强制转换表达式时一定要加括号,否则可能只转换了表达式中的单个量,可能并不报错,但运行时会出现意想不到的问题,也不易检查。
二·MFC问题
1.VS中MFC程序对于自编.cpp文件,第一句话必须是:#include "stdafx.h"。若文件中#include ""/<>语句放在include "stdafx.h"前,则编译时将被跳过,报错。
2.MFC生成菜单折叠问题:
解决方法:找到函数int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct),删除或注释其中的如下语句:
CMFCToolBar::SetBasicCommands(lstBasicCommands);
3.回车\Esc默认按钮问题
对于MFC中对话框,按下“回车”默认调用OnOK();
按下“Esc”默认调用OnCancel()。
解决方法:
(1)去掉“确定”\“取消”按钮的“Default”属性;
(2)重载OnOK(),删除其中的 CDialog::OnOK(), 可关闭“回车”默认;
重载OnCancel(),删除其中的 CDialog::OnCancel(),可关闭“Esc”默认;
4.焦点变换问题:
MFC中注意程序引起的焦点的变化,会导致鼠标一些响应操作出问题。
因此在每次焦点变化情况与自己需求不符时,利用SetFocus进行交点设置。
三·语法问题
1.数组、指针与句柄:
数组名也是指针;
注意:(a)初始:化程序中一定要对指针、句柄进行初始化,否则随机赋值时指针乱指会对程序造成严重影响;
(b)赋值:注意深拷贝与浅拷贝;当深拷贝时注意一定要保证指针不指向NULL,否则会报错(因为不能向NULL地址赋值);若指向NULL,则拷贝前一定要给数组分配了内存(经常采用动态分配即new)。
(c)删除:指针类型使用完后一定及时要释放(最好在指针作用域释放)指针指向的内存(delete[]),不能紧删除指针,否则内存无法释放。句柄使用完后也要进行删除(DeleteObject()).
2.编写函数时注意返回值,在编写函数体内容前先在最后写上返回值;
3.类构造问题:如果类定义中显示的声明了无参构造函数以及析构函数,则即使函数实现的时候函数体并没有任何操作,也必须给出实现。即类中声明的每一个函数都必须给出显示的实现(即使函数体为空,没有操作),否则会报错:error LNK2019与error LNK1120。
四·系统差异
1.windows/linuxs/Mac中“回车”的区别
在Windows中:
'\r' 回车,回到当前行的行首,而不会换到下一行,如果接着输出的话,本行以前的内容会被逐一覆盖;
'\n' 换行,换到当前位置的下一行,而不会回到行首;
Unix系统里,每行结尾只有“<换行>”,即"\n";Windows系统里面,每行结尾是“<回车><换行>”,即“\r\n”;Mac系统里,每行结尾是“<回车>”,即"\r";。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
四·效率问题
1.对于频繁使用的间接(需计算得出)变量,新建一个变量表示,以免重复计算影响效率;
2.对于循环体,能写在外部的程序尽量写在在循环体外部,否则在循环体中会多次执行,影响效率;
C++(MFC)编程一些注意事项的更多相关文章
- MFC编程之数值调节按钮
MFC编程之数值调节按钮 一丶数值调节按钮使用的注意事项 CSpinButtonCtrl类是MFC封装的数值调节按钮. 我们要使用数值调节按钮需要注意的事项. 1.数值调节按钮跟一个编辑框配合使用. ...
- MFC编程 | tab control控件的使用
因为课程需要,会用到MFC编程,所以讲一些经验总结下,以便日后使用查询. // tab control控件的使用 // 建立一个Cluster窗口,通过tab可以切换成C-Means和Fuzzy C- ...
- MFC编程 | 非模态对话框的定义
因为课程需要,会用到MFC编程,所以讲一些经验总结下,以便日后使用查询. // 非模态对话框的定义 // 通过单文档菜单调用一个非模态窗口 1.首先在工程里插入一个对话框(如:IDD_DLG_TEST ...
- VS2010/MFC编程入门之五(MFC消息映射机制概述)
VS2010/MFC编程入门之五(MFC消息映射机制概述)-软件开发-鸡啄米 http://www.jizhuomi.com/software/147.html 上一讲鸡啄米为大家简单分析了MFC应用 ...
- VS2010/MFC编程入门之四(MFC应用程序框架分析)
VS2010/MFC编程入门之四(MFC应用程序框架分析)-软件开发-鸡啄米 http://www.jizhuomi.com/software/145.html 上一讲鸡啄米讲的是VS2010应用 ...
- VS2010/MFC编程入门之三(VS2010应用程序工程中文件的组成结构)
VS2010/MFC编程入门之三(VS2010应用程序工程中文件的组成结构)-软件开发-鸡啄米 http://www.jizhuomi.com/software/143.html 鸡啄米在上一讲中 ...
- VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)
VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)-软件开发-鸡啄米 http://www.jizhuomi.com/software/141.html 上一讲中讲了VS20 ...
- VS2010/MFC编程入门之一(VS2010与MSDN安装过程图解)
原文地址: VS2010/MFC编程入门之一(VS2010与MSDN安装过程图解)-软件开发-鸡啄米 http://www.jizhuomi.com/software/139.html 上一讲中鸡 ...
- VS2010/MFC编程入门教程之目录和总结
鸡啄米的这套VS2010/MFC编程入门教程到此就全部完成了,虽然有些内容还未涉及到,但帮助大家进行VS2010/MFC的入门学习业已足够.以此教程的知识为基础,学习VS2010/MFC较为深入的内容 ...
随机推荐
- php学习笔记5--php中的可变变量,可变函数及匿名函数
可变变量指的是:将一个变量的值再次当做一个变量名从而得到另外一个变量的值.如:$name = 'dqrcsc';$myname = 'name'; //$myname的值碰巧是另一个变量的变量名ech ...
- 记录android5.0更新踩过的坑
1. service的注册必须显示注册,不能隐式注册,相关链接http://www.eoeandroid.com/thread-568853-1-1.html 现象:Service Intent mu ...
- PAT1028—— 人口普查
某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月 ...
- SQL 存储过程 执行效率优化提升 (显示估计)
在sql server 查询区 通过执行 "显示估计的执行计划" ,可以给出 存储过程 缺少索引的提示,并自动生成建立相应 索引 的代码 显示估计的执行计划 执行结果提示: 哦,算 ...
- webkit常见问题汇总
前段时间有人问我一个简单的问题,html如何创建解析的? 我讲了一大堆,什么通过DocumentLoader, CachedResourceLoader, CacheResource, Resourc ...
- linux命令后台运行[转]
有两种方式: 1. command & : 后台运行,你关掉终端会停止运行 2. nohup command & : 后台运行,你关掉终端也会继续运行 一. 简介 ...
- MySQL 备份和恢复
详细地址:http://imysql.cn/mysql_backup_and_recover
- 在ArcGIS中WGS84大地坐标和投影平面坐标的转换
以WGS84转换为北京54坐标为例: 首先你要先知道转化的参数,鉴于我国曾使用不同的坐标基准(BJ54.State80.Correct54),各地的重力值又有很大差异,所以很难确定一套适合全国且精度较 ...
- 应用型GIS 地理信息系统设计内容和方法
挺好的一篇论 文 http://wenku.baidu.com/view/8e40a17c1711cc7931b7165e.html 文章就重点应用型地理信息系统的设计内容.设计过程.相关实现技术与方 ...
- iOS Foundation框架 -4.NSDate类的简单用法
NSDate为日期时间类对象,简单操作: 注意:直接NSLog输出NSDate对象,默认是以0时区为标准,因此会比北京时间少8小时 1.将Date格式转换为自定义格式的字符串格式 // 自定义Date ...