一·书写问题

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)编程一些注意事项的更多相关文章

  1. MFC编程之数值调节按钮

    MFC编程之数值调节按钮 一丶数值调节按钮使用的注意事项 CSpinButtonCtrl类是MFC封装的数值调节按钮. 我们要使用数值调节按钮需要注意的事项. 1.数值调节按钮跟一个编辑框配合使用. ...

  2. MFC编程 | tab control控件的使用

    因为课程需要,会用到MFC编程,所以讲一些经验总结下,以便日后使用查询. // tab control控件的使用 // 建立一个Cluster窗口,通过tab可以切换成C-Means和Fuzzy C- ...

  3. MFC编程 | 非模态对话框的定义

    因为课程需要,会用到MFC编程,所以讲一些经验总结下,以便日后使用查询. // 非模态对话框的定义 // 通过单文档菜单调用一个非模态窗口 1.首先在工程里插入一个对话框(如:IDD_DLG_TEST ...

  4. VS2010/MFC编程入门之五(MFC消息映射机制概述)

    VS2010/MFC编程入门之五(MFC消息映射机制概述)-软件开发-鸡啄米 http://www.jizhuomi.com/software/147.html 上一讲鸡啄米为大家简单分析了MFC应用 ...

  5. VS2010/MFC编程入门之四(MFC应用程序框架分析)

    VS2010/MFC编程入门之四(MFC应用程序框架分析)-软件开发-鸡啄米 http://www.jizhuomi.com/software/145.html   上一讲鸡啄米讲的是VS2010应用 ...

  6. VS2010/MFC编程入门之三(VS2010应用程序工程中文件的组成结构)

    VS2010/MFC编程入门之三(VS2010应用程序工程中文件的组成结构)-软件开发-鸡啄米 http://www.jizhuomi.com/software/143.html   鸡啄米在上一讲中 ...

  7. VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)

    VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)-软件开发-鸡啄米 http://www.jizhuomi.com/software/141.html   上一讲中讲了VS20 ...

  8. VS2010/MFC编程入门之一(VS2010与MSDN安装过程图解)

    原文地址: VS2010/MFC编程入门之一(VS2010与MSDN安装过程图解)-软件开发-鸡啄米 http://www.jizhuomi.com/software/139.html   上一讲中鸡 ...

  9. VS2010/MFC编程入门教程之目录和总结

    鸡啄米的这套VS2010/MFC编程入门教程到此就全部完成了,虽然有些内容还未涉及到,但帮助大家进行VS2010/MFC的入门学习业已足够.以此教程的知识为基础,学习VS2010/MFC较为深入的内容 ...

随机推荐

  1. 跟我一起玩转FineUI之嵌套表格

    最近一直在研究FineUI(http://www.fineui.com/),那么什么是FineUI呢,FineUI是基于 ExtJS 的专业 ASP.NET 控件库.创建 No JavaScript, ...

  2. The future of programming languages

    In this video from JAOO Aarhus 2008 Anders Hejlsberg takes a look at the future of programming langu ...

  3. Part 8 AngularJS filters

    Filters in angular can do 3 different things 1. Format data 2. Sort data 3. Filter data Filters can ...

  4. RedHat Install

    1. 插入光盘1并从光盘启动加载镜像文件 2. 回车后进入安装流程 3. 选择语言 4. 选择键盘布局 5. 鼠标配置 6. 选择安装类型 7. 选择分区类型 8. 添加一个boot分区 9. 新建一 ...

  5. UI2_视图切换ViewController

    // // SubViewController.h // UI2_视图切换 // // Created by zhangxueming on 15/7/3. // Copyright (c) 2015 ...

  6. Codevs 1014 装箱问题

    题目描述 Description 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数). 要求n个物品中,任取若 ...

  7. 判断不在Update Task中

    CALL FUNCTION 'TH_IN_UPDATE_TASK'   IMPORTING     IN_UPDATE_TASK = IN_UPDATE_TASK.  "0 then not ...

  8. 【风马一族_Java】如何获取ACSLL表的值

    消耗两小时,只为一代码. 终于得到了此代码: public class sows { public static void main(String[] args) { byte[] bytes = n ...

  9. 9.配置postfix空客户端

    将本地邮件服务器配置充当为控客户端,已将所有邮件都转发到中央服务器以进行发送 1.postconf -e "relayhost=[mail.example.com]" 邮件被路由到 ...

  10. ECMAScript整理笔记(持续更新....)

    参考文献: ECMAScript Array:http://www.jimmycuadra.com/posts/ecmascript-5-array-methods ECMAScript5兼容展示大全 ...