2012年11月28日

截获WndProc过程

摘要: 为防止点击窗体右上角的关闭按钮(X按钮)关闭窗体,我们可以覆盖WndProc过程,只要发现消息为WM_SYSCOMMAND且wparam参数为SC_CLOSE就不让继续传下去。Delphi代码:unit Unit1;interfaceuses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs;type TForm1 = class(TForm) private { ... 阅读全文

posted @ 2012-11-28 16:55 天上星 阅读(274) 评论(0) 推荐(0)

2012年3月6日

软件编译中步骤探询

摘要: 我们在程序编译时会经历 预编译---编译---汇编---链接 这四个阶段。在高级语言中这些步骤不易察觉,下面是几个阶段要处理的内容:预编译:此过程主要处理源代码中以#开头的预编译指令,如 #if ,#include,#define等1.将所有的#define删除,并且展开所有的宏定义。2.处理所有条件预编译指令,比如:#if ,#endif,#ifdef等3.处理#include预编译指令,将被包含的文件插入到此指令的位置。注意:这个过程是递归调用的,也就是说这个文件 也可能包含其它文件。4.删除所有的注释,如://,/**/等5.添加行号和文件名标识名,以便编译器产生调试用的行号信息及用于编 阅读全文

posted @ 2012-03-06 09:36 天上星 阅读(897) 评论(0) 推荐(0)

2011年12月30日

VC中#ifdef和#pragma once的区别

摘要: 有两个头文件: a.h和b.h//a.h//a.h#ifndef _a_h#define _a_hvoid amsg();#endif//b.h//b.h#pragma once void bmsg();它们的源代码为:a.cpp#include <STDIO.H>#include "a.h"void amsg(){ printf("Call a.msg()\n");}b.cpp#include "b.h"#include <STDIO.H>void bmsg(){ printf("Call b.ms 阅读全文

posted @ 2011-12-30 11:56 天上星 阅读(712) 评论(0) 推荐(0)

2011年10月7日

C++/CLI中DataGridView

摘要: 在CLI编程中,有个DataGridView表格,可以显示相关的数据。它有三种模式:1.无约束模式 没有绑定数据库或其它物件,而是用手写代码给其填充数据的一种模式,一特产用dataGridView->Rows->Add()的形式加入数据。、2.有约束模式 用DataGridView的DataSource来绑定数据源,如数据库或文件。用BindingSource控件很方便用。3.虚拟模式 用DataGridView连接到内存中独立的数据源(数据缓存)以下为无约束模式的例子,是手工在一个表格中显示自己定义的数据,里面都有注释,代码大部分是写在窗体Form1的构造函数中。代码:#prag 阅读全文

posted @ 2011-10-07 15:07 天上星 阅读(2333) 评论(0) 推荐(0)

2011年9月28日

CLR中的委托和事件

摘要: 还记得这个声明吗: Returntype (*lpfun)(params). 这是本地C++中的函数指针,即把此类型变量指针返回类型和实参一样的函数,就可以用此类型变量来执行此过程。如下:#include <iostream>typedef int (*lpfun)(int&);int getvalue(int& a){ return a;}void main(){ lpfun p=getvalue; int var=55; printf("the value is: %d\n",p(var));}结果为: 和函数指针一样,在C++/CLR中的事 阅读全文

posted @ 2011-09-28 11:33 天上星 阅读(878) 评论(0) 推荐(0)

2011年9月15日

类5-类的继承、虚函数、纯虚函数、虚析构函数

摘要: 一、类的继承 就像家谱一样,就是一个继承图。爷爷-父亲-儿子-孙子等.类也一样,上面的类称为基类,也称父类。基类下面的类叫子类也叫派生类。 子类对父类的一些属性等有所继承也有所发展,因此才有了类的继承。 C++中类的继承格式为: class ChildClass:public ParentClass; 子类后面要加上冒号及类限制符(public\protected\private)和基类。 class CExample{ public: ... protected: ... private: ...}在一个类中,会有三个访问限制符。public 是公共,公开的意思,只要有对象访问C... 阅读全文

posted @ 2011-09-15 17:04 天上星 阅读(1167) 评论(0) 推荐(0)

2011年9月14日

类模板

摘要: 类模板与原来的函数模板非常像,这里只给出了一个类模板的例子,其它的不多说了。#include <iostream>using namespace std;template<class T,class T2> //可含有多个类型,用逗号分开class CSamples //类的声明{public: CSamples(const T Values[],int count); //函数定义 CSamples(const T& value) { m_Values[0]=value; m_free=1; } CSamples() ... 阅读全文

posted @ 2011-09-14 15:32 天上星 阅读(222) 评论(0) 推荐(0)

2011年9月10日

运算符重载

摘要: 我们平常用的+、-、*、/等基本类型,如果我们想用对象也进行如此的操作,就需要我们自定义类并重新实现这样的算法,这就是我们要说的运算符重载,有点像函数重载的味道。运算符重载不允许我们定义新的运算符也不允许改变它的优先级,它的优先级按照原来本身的优先级进行计算。其中有以下几种运算符不能重载: 作用域解析运算符 :: 条件运算符 ?: 直接成员访问运算符 . sizeof 运算符 sizeof 解除对指向类成员的指针引用运算符 .* 运算符的关键定为operator,后面我们常用的运算符号,operator和运算符之间有没有空格都可以,像<、>等中间不用有空格 ,但像特殊的运算符要有空 阅读全文

posted @ 2011-09-10 16:40 天上星 阅读(701) 评论(1) 推荐(0)

2011年9月9日

联合union

摘要: 在过去内存受限的时候(最大才64M),C++中有一个功能允许多个变量共享同相同的内存(显然不能同时使用),我们称之为联合。如下例子:union Rsize{ double longth; float width; int height;} myuser;即联合中的三个变量共用一块内存。 Rsize为联合类型的名称,myuser为此种类型的变量。也可以不同时声明变量:union Rsize{ double longth; float width; int height;} ;在变量产生之前,并没有内存分配,这和类是一样的。如果不指明联合的名字,... 阅读全文

posted @ 2011-09-09 16:32 天上星 阅读(550) 评论(0) 推荐(0)

类4-析构和复制构造函数

摘要: 类的构造函数是产生类对象,每产生一个类对象就会占用一定的内存,当类不用时,对象又是如何不再占用内存呢?这里就会用到析构函数,即销毁类对象用到的函数。如果一个类成员中没有析构函数,则编译器在销毁对象时会提供一个此函数进行对象销毁,把类数据成员变量从自由存储器中去除。一. 析构函数没有返回值,也不提供任何形参。 因此每个类只有一个析构函数。 它的命名为~加上类名即可。在类外定义时要加上类名和域名解析符。 #include <iostream>#include <cstring>using namespace std;class CBox{public: CBox(); ~. 阅读全文

posted @ 2011-09-09 15:12 天上星 阅读(260) 评论(0) 推荐(0)

导航