10 2014 档案
摘要:多态性是面向对象程序设计的关键技术之一。利用多态性技术,可以调用同一个函数名的函数,实现完全不同的功能。若程序设计语言不支持多态性,不能称为面向对象的语言。在C++中有两种多态性:编译时的多态性:通过函数的重载和运算符的重载来实现的。运行时的多态性:在程序执行前,无法根据函数名和参数来确定该调用哪一...
阅读全文
摘要:继续上节,我们还是用工程文件创建一个MDI窗口。代码如下:program MDIApp;uses Windows, Messages;var TheMessage:TMsg; FrameWindow,ClientWindow,ChildWindow:HWND;const IDCHILDWN...
阅读全文
摘要:在加载的图像上写文字,是不是很神奇啊!其实做起来还是很简单的,主要是用到了画布类,在图像上写文字罢了!这里我们要用到四个按钮,2个对话框,一个编辑框和一个图像框。设置的效果如下图:unit Unit1;interfaceuses Windows, Messages, SysUtils, Var...
阅读全文
摘要:在上一节中,有两个身份证号显然是不合理的。为此,可以把class Person这个共同基类设置为虚基类,这样,从不同路径继承来的同名数据成员在内存中就只有一个拷贝,同名函数也只有一种映射。虚基类定义方式虚基类(virtual base class)定义方式如下: class 派生类名:virtu...
阅读全文
摘要:绘图函数PolyGon,RoundRect,Ellipse。 PolyGon函数原型procedure TCanvas.Polygon(const Points: array of TPoint);功能:绘制多边形参数:点的位置 RoundRect函数原型功能:圆角矩形procedure...
阅读全文
摘要:首先我们要用到的API函数有SetWindowLong,GetWindowLong,SetLayeredWindowAttributes。SetWindowLong函数原型:Private Declare Function SetWindowLong Lib "user32" _Alias "S...
阅读全文
摘要:C++多重继承的概念由多个基类共同派生出派生类的继承结构称为多重继承或多继承(multiple-inheritance)。多重继承是从实际的需要产生的。例如:从大学在册人员产生学生和教职工。再从学生派生研究生。如果考虑到研究生可以当助教,那么他们又有了教职工的特性。教职工可分为教师和行政人员,但行政...
阅读全文
摘要:一.继承的引出自然界中很多客观事物具有很多共性,比如人与猿之间、火车与汽车之间、大炮与机枪之间,明显地有很多共性,但是它们之间又有很多不同。C++解决 “类似但有不同”问题的方法是——允许类从一个或多个其他类(在这里称为基类)继承其特性和行为,参看下面的例子://------------------...
阅读全文
摘要:利用ExitWindowEx实现最简单的关机功能 Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long 参数: uFlags:...
阅读全文
摘要:本例在建立一个新的堆前后分别通过 GetProcessHeaps 函数获取了当前进程的堆句柄列表,效果图:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For...
阅读全文
摘要:这一讲跟大家介绍下类模板。类模板的指导思想跟函数模板类似。 代码复用是面向对象设计中的重要的软件开发思想,对于软件开发效率很是关键。怎样做好代码复用呢?越是通用的代码越好复用,将类型作为参数,这种程序设计类型就是参数化程序设计。模板就是C++进行参数化设计的工具。利用模板我们可以使用同一段程序处...
阅读全文
摘要:首先新建一个工程,不用单元,把窗口关掉,我们用WINDOWS API函数来创建一个窗口。program Project1;uses Windows,Messages;function WindowProc(HWndow:HWND;msg,wparam,lparam:UINT):UINT;std...
阅读全文
摘要:一个使用私有堆的例子:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = clas...
阅读全文
摘要:先来介绍几个画矩形的函数:DrawFocusRect():画一个焦点矩形;Rectangle():用当前选定的画笔描绘矩形,并用当前选定的画刷填充;DrawEdge():用指定的样式描绘一个矩形的边框;RoundRect():用当前选定的画笔画一个圆角矩形,并用当前选定的画刷填充。今天用的是Draw...
阅读全文
摘要:这节讲什么是内联函数,为什么要使用内联函数? 当编译器发现某段代码在调用一个内联函数时,它不是去调用该函数,而是将该函数的代码,整段插入到当前位置。这样做的好处是省去了调用的过程,加快程序运行速度。(函数的调用过程,由于有前面所说的参数入栈等操作,所以总要多占用一些时间)。这样做的不好处:由...
阅读全文
摘要:VirtualAlloc 分配的内存是以 4K 为最小单位、连续的内存地址(但映射到真实的内存时它不一定是连续的), 前面说了, 它不适合分配小内存(譬如只有几个字节的变量); 局部的变量在 "栈" 中有程序自动管理, 那么那些全局的小变量怎么办呢? 这就要用到 "堆".这样看来, Virtua...
阅读全文
摘要:系统给程序的地址数是 4G, 为什么不是 3G 或 5G? 因为 32 位的指针的最大值就是 $FFFFFFFF, 它不能表示更多了, 究其根源这要回到 CPU 的寻址能力、地址总线等等.在 Win64 下, 系统给程序的地址数达到了 16EB(0 - $FFFFFFFFFFFFFFFF), 也...
阅读全文
摘要:这节讲解构造函数和析构函数 构造函数 构造函数是一个与类名相同的方法,它可以没有参数,也可以有一个或多个参数。如果构造函数没有参数,该构造函数为默认构造函数。 举例 默认的构造函数 class A{private: char m_Username[128]; char m_P...
阅读全文
摘要:BitBlt该函数对指定的源设备环境区域中的像素进行位块(bit_block)转换,以传送到目标设备环境BitBlt( DestDC: HDC; {目标 DC} X, Y, Width, Height: Integer; {目标位置与大小} SrcDC: HDC; ...
阅读全文
摘要:这一讲开始讲面向对象设计中最重要的概念--类,及由类引申出来的一些知识。 在面向过程的设计中,程序的模块是函数构成的,而面向对象设计中程序模块是类构成的。函数只是语句和数据的封装,而类是函数与数据的封装,对比下肯定是面向对象设计更重量级了,更适合大型程序的开发。其实,类就是一种自定义数据类型,跟...
阅读全文
摘要:Windows 是多任务的操作系统, 一个任务就是一个应用(应用程序)、一个应用占一个进程; 在一个进程里面, 又可以运行多个线程(所以就有了很多"多线程编程"的话题). 对 Win32 来讲, 系统给每个进程 4GB 的地址空间: 低端 2GB($00000000 - $7FFFFFFF)...
阅读全文
摘要:首先绘制多边形的API函数有: Polygon(); //描绘一个多边形,由两点或三点的任意系列构成 polyPolygon(); //用当前选定的画笔绘画两个或多个多边形 PolyPolyline(); //用当前选定的画笔描绘两个或多个多边形 首先来看Polygon的函数原型P...
阅读全文
摘要:什么是类,什么是对象?如何定义类?如何定义对象? 首先来定义一个人类 class Person{ public: void GetWeight(); void SetWeight(); private: int weight; }; 使用cla...
阅读全文
摘要:TListBox组件属性AutoComplete 设置是否将焦点移到用户键盘输入选项上BorderStyle 设置组件是否有边框Canvas 提供一个绘图面板。Columns 指定列表框的可见列数Count 获得列表框的组件选项数ExtendedSelect 是否可以在列表框中选取一...
阅读全文
摘要:用到2个API函数,Polyiine,Polylineto函数原型如下Declare Function Polyline Lib "gdi32" Alias "Polyline" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Lon...
阅读全文
摘要:TTimer组件属性 Enabled属性 该属性控制TTimer组件是否周期性的产生OnTimer事件,为True,则产生周期性事件。false则不产生 示例procedure TForm1.FormCreate(Sender: TObject);begin timer1.Enabled...
阅读全文
摘要:THotKey组件属性 BiDiMode 设置该属性可指定文本的双向模式,控制读文本的顺序、垂直滚动条的位置。对齐方式不改变组件包含的数量、日期、时间、和当前值。 HotKey使用该属性可设置或改变热键相关的组合键,如ALT+A为默认值 InvalidKeys 无效的组合键 Modi...
阅读全文
摘要:引用的介绍什么是引用?引用就是别名,别名就是创建一个对象的另一个名称。创建引用的方法用&符号。在c++ 下你可以把它看作是另外的一种指针,通过引用类型我们同样也可以间接的操作对象,引用类型主要是用在函数的形式参数上,通常我们使用它是把类对象传递给一个函数。 引用对象采用类型名加上&符号和名称的方...
阅读全文
摘要:工具栏组件(TToolBar)为用户提供了快捷菜单的访问方式。 Buttions列出工具栏中的工具按钮,其中保存了TToolButton实例的列表 Canvas在OnCustomDraw或OnCustomDrawItem事件中使用该属性可以在工具栏上画图。 Constraints规定TTo...
阅读全文
摘要:菜单组件TMainMenu创建菜单双击TmenuMain,单击Caption就可以添加一个菜单项 菜单中添加分割线只需加“-”就可以添加一个分割线 级联菜单的设计单击鼠标右键弹出菜单中选择Create Submenu菜单项单选功能设计要在设计的菜单项目中选择RadioItem属性为True,Ch...
阅读全文
摘要:Const指针申明Const指针格式如下 const int* p; int* const p1; const int* const p2;这些含义都各不相同,所以我们必须要会使用 p是指向整形的常量的指针,它指向的值是不可更改的。 p1是一个指向整形的常量指针。它指向的值可以修改,但p...
阅读全文
摘要:画线函数 LineTo(): 画直线 PolyBezier() 画贝塞尔曲线 PolyDraw(): 画多边形曲线 Polyline 画线段 LineTo()函数返回Long类型,返回0表示失败,不为0,则成功 参数 hdc: Long //设备的句柄 x和y Long //线段...
阅读全文
摘要:OpenDialog组件OpenDialog用来打开文件的一个对话框。 Filter该属性可设置文件类型单击该属性如图Filter Name设置文件的名字,Filter设置文件的类型 OpenDialog1.Filter:='文本文件(*.TXT)|*.TXT'; Filefile属性是Tst...
阅读全文
摘要:使用关键字new动态分配内存,在new后面为其分配内存对象的类型,让编译器知道需要多少内存。new的返回值是一个内存地址,内存的地址被存储在指针中,因此将new的返回值赋给一个指针。如 short int* p; p = new short int; 或者声明指针的同时...
阅读全文
摘要:TPageControl组件属性ActivePage用来显示当前页面。示例:多页面显示procedure TForm1.FormCreate(Sender: TObject);var i:Integer;begin for i:= 0 to PageControl1.PageCount-1 do...
阅读全文
摘要:TRichEdit组件属性 Lines用来编辑单行添加文本或删除文本 HideSelection为true是,组件有焦点,false则无焦点 TRichEdit组件方法 Clear删除文本FindText查找指定的文本示例查找RichEdit组件指定的字符串 ibegin:= riche...
阅读全文
摘要:TMemo组件属性CaretPos指定光标相对于编辑器的客户区域原点的X和Y的位置当光标在TMemo组件上定位时,显示光标的坐标 panel1.Caption:='当前位置:'+inttostr(Memo1.CaretPos.x)+ ','+inttostr(Memo1.CaretPos.y...
阅读全文
摘要:SelectClipRgn功能:选取一个区域新的剪切区域Declare Function SelectClipRgn Lib "gdi32" Alias "SelectClipRgn" (ByVal hdc As Long, ByVal hRgn As Long) As Long参数hdc:设备环境...
阅读全文
摘要:C++的指针太重要了,我们有必要去掌握它。所以必须认真的对待指针。先来讲解什么是指针。(重点掌握) 指针是存储内存地址的变量,内存又是什么?内存是干啥用的?简单的说,就是存储一些二进制数据,它是按一定的顺序存储的线性单元结构。那一个数据又是如何存储在内存的呢?这些问题都是汇编的基础知识,如果你...
阅读全文
摘要:TEdit 组件主要用于数据的输入和显示和编辑等操作。AutoSelect 获取组件焦点。该属性只能在单行文本组件使用。值为True为选中。false则不选中。BorderStyle 设置编辑框控件的外观效果。当值为bsSingle,为一个单线边框。为bsNone则无边框CanUndo 该属性...
阅读全文
摘要:标签组件是比较常用的组件,现在来看看标签组件的常用的基本属性:Align 它的作用是和窗体对齐,对齐的方式有alNone, alTop, alBottom, alLeft, alRight, alClient, alCustom.Alignment 它的作用是标签文本显示的位置,对齐方...
阅读全文
摘要:Delphi 利用Object Pascal 和可视控件库(VCL)对底层的Windows API 进行了完美的封装,所以很少需要使用基础Pascal 语言来建立Windows应用程序,也无需直接调用Windows API 函数。尽管如此,如果遇到特殊情况,VCL 又不支持,Delphi程序员还...
阅读全文
摘要:Delphi 4 的动态数组传统的Pascal 语言其数组大小是预先确定的,当你用数组结构声明数据类型时,你必须指定数组元素的个数。专业程序员也许知道些许动态数组的实现技术,一般是采用指针,用手工分配并释放所需的内存。Delphi 4中增加了非常简单的动态数组实现方法,实现过程效仿我前面讲过的动态长...
阅读全文
摘要:直接上源码不做解释自己看吧Option ExplicitPrivate Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount A...
阅读全文
摘要:GetFontLanguageInfo() GetFontLanguageInfo()函数返回指定设备中字体的信息。 它的声明形式如下所示:Private Declare Function GetFontLanguageInfo Lib "gdi32" Alias "GetFontLangu...
阅读全文
摘要:字符串类型在Borland公司的Turbo Pascal和16位Delphi中,传统的字符串类型是一个字符序列,序列的头部是一个长度字节,指示当前字符串的长度。由于只用一个字节来表示字符串的长度,所以字符串不能超过255个字符。这一长度限制为字符串操作带来不便,因为每个字符串必须定长(确省最大值为2...
阅读全文
摘要:c++语言中大部分程序都离不开指针和数组,所以,我们有必要弄清楚指针和数组。 首先定一个字符数组char s[10];然后定义一个指向字符的指针char* p;数组用[]来申明,而*则表示指针。数组是以0作为下标开始,s有10个元素,从s[0]...s[9]。指针可以保存它的地址如:p = &s...
阅读全文
摘要:首先来四个API函数,分别是DeltetObject,CreateFontIndirect,SelectOBject,TextOut.先分别对这几个函数的说明做下介绍。 DeltetObject函数功能:该函数删除一个逻辑笔、画笔、字体、位图、区域或者调色板,释放所有与该对象有关的系统资源,在对...
阅读全文
摘要:我们知道每个程序都有它的一套流程结构,而一个经典的程序更是离不开流程控制。这节我来讲解流程控制的各种结构。 结构按一定的顺序执行的叫顺序结构如下所示,直到程序执行完毕退出。,语句1语句2语句3...return 0语句 选择结构 (1)if ~ else 条件语句 (2)switch 多...
阅读全文
摘要:运算符就名词上来说就是用来运算的一些符号,而一个表达式则是由语句和运算符组合。如x=5,或x=a+b这些都是表达式。首先详解讲解运算符。 运算符可以分为赋值运算符,数学运算符,关系运算符。赋值运算符用(=)表示。如x= 1意思是将1的值赋给x,而不是数学中的相等,这里一定要区别清楚。 那数学...
阅读全文
摘要:这讲是核心重点***** 什么是过程?什么又是函数?过程和函数在delphi中无处不再。过程简单的理解就是单击一个按钮这就是一个过程,函数和过程不一样的地方就是函数能把这个过程的结果返回给我们,过程的关键字用procedure,函数的关键字Function下面就具体讲解过程与函数的定义 过...
阅读全文
摘要:首先,什么是语句?为什么需要语句?语句又是怎么组成的?语句简单的说就是一个分号结尾的句子,我们可以称为这是一条语句。那这条句子就是由一些关键字和操作指令组成。语句通常放在过程和函数中,一个程序通常都是由若干个语句组成,没有语句,当然程序也就无法运行。语句从大的范围可以分为简单语句和复合语句。简单...
阅读全文
摘要:先来介绍三个个API函数AddFontResource,SendMessage,RemoveFontResource。AddFontResource这是一个添加字体资源到系统字体表中,原型如下:int AddFontResource( LPCTSTR lpszFilename // point...
阅读全文
摘要:在讲解数据类型之前先讲下C++语言的关键字、标识符、运算符。 关键字关键字就是C++预定义好的一些单词,我们在定义变量的时候是不能随便使用的,常见的关键字有:(了解即可)asmdoublenewswitchautoelseoperatortemplatebreakenumprivatethisca...
阅读全文
摘要:为什么要使用自定义数据类型呢?原因很简单,在现实生活中,比如一个学生他有姓名,学号,年龄,身高,出生年月,而在上一讲中,我们提到的数据类型无法满足现实生活需求,这个时候,自定义数据类型该派上用场了,我们可以定一个学生类型。从而达到我们的需求了。自定义数据类型又可以分为子界类型,数组类型,记录类型...
阅读全文
摘要:delphi中声明数据类型用关键字Var,关键字Var可以在很多地方使用,如放在函数或过程的开始部分的叫局部变量。放在单元中的叫全局变量。delphi中数据类型分为三大类:即有序数据类型,实数类型和字符类型。在细分可以分成。整数类型,布尔类型,字符类型,实数类型,日期和时间类型,自定义数据类型。等等...
阅读全文
摘要:类可以是用户自定义的类,也可以是系统已经定义好的类,什么是自定义类,比如我们定义一个人,而人就是一个类,而男人和女人都是这个这个人的子类。还有一种类就是系统已经给我们定义好的类,我们可以直接使用,比如iostream类,string类,system。。。等等。 什么是函数?简单的理解就是创建C...
阅读全文
摘要:直接上代码解释更加清楚//说明:本实例用到4个API函数CharLower,CharLowerBuff,CharUpper,CharUpperBuff,分别是对字符串进行大小写转换。进行每个字符串大小写转换。用到4个按钮,2个编辑框控件2个标签控件。Option ExplicitPrivate De...
阅读全文
摘要:使用类之前使用关键字type来声明一个类如type A = class i,j,k:integer; procedure setA(a,b,c:integer); function gerA():integer;end;这里已经定义了一个类,现在我们来使用类在使用类之前,我们先必须给下面2行...
阅读全文
摘要:首先声明,我会以delphi7教程为主,可能会在这方面用的时间比较多,废话不多说了,今天给大家带来delphi7中最基本的面向对象程序设计语言。delphi是可视化的编程语言,delphi利用提供可视的"组件",像组件里添加一些功能或命令,该程序就有了自己所拥有的功能,比如说给组件“Button1...
阅读全文
摘要:本教程是一个复习的课程,也是对新手提供最简单的C++语法学起,高手不要笑我~~~#includeusing namespace std;int main(){ cout这句话是什么意思?include就是包含而“#”代表了预处理命令,简单的说就是要包含后面的里内容iostream就是输入输出的头文...
阅读全文
摘要:函数功能:GetDC 函数用户获得指定窗口的客户区或整个屏幕的设备环境句柄,随后,你可以在 GDI 函数中使用该句柄在设备环境中绘图。设备环境是一个不公开的数据结构,它的值供 GDI 函数内部使用。获取设备的句柄调用GetDC,首先申明Private Declare Function GetDC L...
阅读全文

浙公网安备 33010602011771号