一·书写问题

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. html2canvas 踩坑总结

    需求:将html表格导出为图片,表格可以自己编辑数据,并适配各种屏幕大小.上网搜了下,找到了html2canvas,一开始使用的是最新版0.5.0,最终因为需要支持自定义div编辑框自动换行选择了v0 ...

  2. Layabox:全球唯一Flash直接开发H5的工具Laya.Flash终于开放(转)

    HTML5是风口,但年轻幼稚,Flash昔日黄花,但丰满妖娆,Layabox使用Flash直接开发HTML5(或编译页游),渴望性感而青春,但久在深闺,只见于一些大企业和朋友圈中,被指“饥饿营销”,保 ...

  3. PictureBox控件鼠标进入的手形改变和提示

    PictureBox控件载入了图片后,如果要设置其为链接作用的功能,一般需要当鼠标移动到其上时鼠标自动变为手形以提示用户此时可以点击,如果图形无法方便辨识链接的具体功能,最好此时给与一定提示. 1.鼠 ...

  4. asp.net在网页上显示数据库中的数据

    第一步: 第二步: 第三步: 第四步:在网页代码中写显示格式代码,如下 <asp:SqlDataSource ID="SqlDataSource1" runat=" ...

  5. js选中下拉框的默认选项

    //这是修改时选中 $("#type").find("option[value='"+factory+"']").attr("se ...

  6. 20150410---GridView分页(备忘)

    GridView自带分页功能,但是模板单一,试用较少数据. AllowPaging="true" PageSize="10" 启用分页设置.默认每页数量为10 ...

  7. Js获取标签高度

    能力有限:问个问题,标签相对页面高度,是怎么写? 鼠标的横坐标,X轴: event.clientX; 鼠标的竖坐标,Y轴: event.clientY; 网页可见区域宽:    document.bo ...

  8. HDU1070 Milk 细节决定成败

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1070 注意:1.喝到第五天,第六天就不喝了  2.相同花费的,优先考虑容量大的  3.注意强制类型转换 ...

  9. 杭电ACM2091--空心三角形

    http://acm.hdu.edu.cn/showproblem.php?pid=2091 scanf 和 printf的输入输出功能并不强大.有时候我们需要清空输入输出流,所以一定切记getcha ...

  10. Model Builder中Table2Table中字段映射的问题

    ArcGIS10中使用过程中,Bug不少.尽管有了SP3,但模型耦合的深层次的应用中还是错误不少.目前只是遇到一个,利用躲避的方法解决一个.例如,从NetCDF中抽出的数据表,必须在内存和数据库中都存 ...