编程技巧 - 文章列表

  • 告诉大家如何使用C++的CList C++使用技巧

    初学mfc者,往往对CList等mfc的Collect类的使用感到迷惑,在使用中经常会遇到许多问题,导致对vc中的Collect类的使用产生了惧怕。以下,就个人经历而言,告诉大家如何使用CList。CList是一个双向链表类。1、头文件名不可少Clist类定义在Afxtempl.h 头文件中,因此在使用该类时,需要加这个头文件名。2、理解CList的声明和构造方法CList的声明如下:template< class TYPE, class ARG_TYPE >class CList : public CObject由此,我们知道CList是一个模版类,那么他的两个class是什么意

  • C++程序内存越界的错误原因

    现象:  1 程序出现异常 异常的现象有很多,如:代码突然跑到不相干的地方去执行,访问异常,正常的变量操作也报错...      原因:代码段紊乱,this指针被改变,指针指向的数据被改变  2 程序按逻辑执行,但数据错误  如:变量内容突然消失      原因:变量所在空间被其它操作误删除等  3 其它莫名其妙的错误 原因:  越界的基本比较原因,如        

  • C++项目怎样调用C#写的DLL类库

      使用C++调用C#的DLL     SwfDotNet是C#编写的,作者的C#水平,真是令我佩服。这是个特别好的读写Swf文件的库。但是,我要用在C++项目中,怎么让C++调用C#的DLL呢。今天一上午都在琢磨这个问题,耽误了很多时间,原因是编译是出现: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失。 接着就是一大堆的0x01等等。自己做了个Sample,仔细分析发现还是自己没有搞清楚。正确的操作如下: 1 创建C# DLL,需要指定

  • c++各种数据类型之间的转换方法

    ---- 使用C语言编程序,有时需要把一种数值(如float类型的数值)转换成另一种类型(如int类型)的数值使用,这时,我们就要用到类型强制转换运算符,如(int)、(float)等。但是在VC++中,当把一个float类型的数值转换成int类型时,有时会出现比较大的误差。我在工作过程中就碰到过,当我把一个值为1140.00的float型变量ftemp使用如下方法转换成int类型, itemp=(int)ftemp;这时,int型变量itemp的值为1139,误差1(在本文中,我称这种误差为“1误差”)。这么大的误差,我们是不能接受的。---- 经过深入的测试研究,我发现:在VC+

  • C++中数组过大无法运行的解决方法

    今天写程序的时候突然发现C++中大数组居然无法运行,上网百度一阵之后,最终还是找到了解决方法,下面摘抄下来分享给大家。方法一:      在VC的Project   setting里的link选项卡里把栈开大一点(windows里默认是4M)      方法二:      声明成全局或static的,这两种变量不压栈,想开多大都可以    &nbs

  • C++如何修改指针的地址

     间接修改指针的地址      代码:  // test for a pointer.cpp : Defines the entry point for the console application.  //  #include "stdafx.h"  #include <iostream>  using namespace std;  typedef struct &nb

  • 浅谈CString的效率问题

      CString 的一个问题是它确实掩藏了一些低效率的东西。从另外一个方面讲,它也确实可以被实现得更加高效,你可能会说下面的代码: CString s = SomeCString1;s += SomeCString2;s += SomeCString3;s += ",";s += SomeCString4; 比起下面的代码来,效率要低多了: char s[1024];lstrcpy(s, SomeString1);lstrcat(s, SomeString2);lstrcat(s, SomeString 3);lstrcat(s, &quot

  • c++实现渐变填充窗体背景的方法

      这种奇特的视觉效果制作起来相当简单,只需将屏幕分成许多行,每一行显示不同的颜色就可以了。渐变图形可以有许多种形式,有圆形渐变、矩形渐变、对角渐变等多种显示效果。要显示渐变,需使用到RGB 宏,每次使颜色值的各颜色分量稍有变化B:实现与应用  选择菜单 File | New Application,创建一个新的项目文件。在窗体 Form1 上放置一个 TColorDialog 控件,然后切换到Unit1.h,在 TForm1 的 private 部分加入两个变量的定义,分别用于设置起始颜色和终止颜色。private: // User declarations TColor Star

  • C++ exit()子程序终止函数与return()函数的差别

     exit()子程序终止函数与return()函数的差别  在main函数中我们通常使用return (0);这样的方式返回一个值。   但这是限定在非void情况下的也就是void main()这样的形式。   exit()通常是用在子程序中用来终结程序用的,使用后程序自动结束跳会操作系统。   但在如果把exit用在main内的时候无论main是否定义成void返回的值都是有效的,并且exit不需要考虑类型,exit(1)等价于return (1)#include <iostream>  #include &

  • c++面向对象编程多态的概念及多态的实现方法

     类的多态特性是支持面向对象的语言最主要的特性,有过非面向对象语言开发经历的人,通常对这一章节的内容会觉得不习惯,因为很多人错误的认为,支持类的封装的语言就是支持面向对象的,其实不然,Visual BASIC 6.0 是典型的非面向对象的开发语言,但是它的确是支持类,支持类并不能说明就是支持面向对象,能够解决多态问题的语言,才是真正支持面向对象的开发的语言,所以务必提醒有过其它非面向对象语言基础的读者注意!   多态的这个概念稍微有点模糊,如果想在一开始就想用清晰用语言描述它,让读者能够明白,似乎不太现实,所以我们先看如下代码://例程1  #inclu