C++程序设计教程 MFC简介
C++程序设计教程 MFC简介
MFc简介 VC++分为AP和MFC两部分 Win32AP工( Application Programming Interface)类似于c 语言的库函数,提供诸如 strcpy( memset()、 fopen()等函数。 MEC( Microsoft Foundation Cass)微软基本类库,提供窗口 ( Windows)式程序编程框架。 通过MFC,我们可以构造基于窗口的应 用程序,如对话框( Dialog)、单文档 ( Single Document)和多文档 (Mu1 tiply document)应用软件
MFC简介 VC++分为API和MFC两部分 Win32 API(Application Programming Interface)类似于C 语言的库函数,提供诸如strcpy()、 memset()、fopen()等函数。 MFC ( Microsoft Foundation Class ) 微软基本类库,提供窗口 (Windows)式程序编程框架。 通过MFC,我们可以构造基于窗口的应 用程序,如对话框(Dialog)、单文档 (Single Document)和多文档 (Multiply Document)应用软件
MFc的基本数据类型 王.int是特殊的数据类型,它等同于操作系统的 位数。如32位系统(Win32)int就是32位。 2.重新定义数据类型是为了可移植性 3.数据类型:(整型) BOOL布尔类型(int型) TNT,UI与int有关类型 CHAR,( UCHAR)BYTE与char有关类型8bit sORT,( USHORT) WORD与 short有关类型16bit 5.LONG,( ULONG) DWORD与1ong有关类型32bit 6. LONGLONG, ULONGLONG64bit类型 4.数据类型:(浮点型) 1.FIOA:类型£1oat32bit DOUBLE:类型doub1e64bit
MFC的基本数据类型 1. int 是特殊的数据类型,它等同于操作系统的 位数。如32位系统(Win32)int就是32位。 2. 重新定义数据类型是为了可移植性。 3. 数据类型:(整型) 1. BOOL 布尔类型 (int型) 2. INT, UINT 与int有关类型 3. CHAR,(UCHAR)BYTE 与char有关类型8bit 4. SHORT,(USHORT)WORD 与short有关类型16bit 5. LONG,(ULONG)DWORD 与long有关类型32bit 6. LONGLONG,ULONGLONG 64bit类型 4. 数据类型:(浮点型) 1. FLOAT : 类型 float 32bit 2. DOUBLE : 类型 double 64bit
程序的可读性 好的程序体现在下面几个方面: 正确性、可读性、健壮性、可维护性 VC++中关于提高可读性的几项基本要求: 要遵循模块化缩进的原则。 工程、类、变量等等的名称一律用英文。 变量起名要有意义,让人容易理解其含义。 采用英文,不要用汉语拼音。 不大容易理解的地方应及时加注释 变量写法遵循匈牙利记法
程序的可读性 好的程序体现在下面几个方面: 正确性、可读性、健壮性、可维护性 VC++中关于提高可读性的几项基本要求: 要遵循模块化缩进的原则。 工程、类、变量等等的名称一律用英文。 变量起名要有意义,让人容易理解其含义。 采用英文,不要用汉语拼音。 不大容易理解的地方应及时加注释。 变量写法遵循匈牙利记法
变量名的匈牙利记法 Hungarian notation BOOL vAriable int,工NT vAriable UINT vAriable char char chVariable BYTE byVariable SHORT VAriable WORD VAriable LONG VAriable DWORD inVariable FlOAT fltvariable DOUBLE bivAriable CHAR[I szVariable
变量名的匈牙利记法 Hungarian notation BOOL : bVariable int, INT : nVariable UINT : uVariable char, CHAR : chVariable BYTE : byVariable SHORT : sVariable WORD : wVariable LONG : lVariable DWORD : dwVariable FLOAT : fltVariable DOUBLE : dblVariable CHAR[] : szVariable
关于 CSize s typedef struct tagSIZE LONG 类型定义 C&/ LONG 形}S工zE,*PS工zE,*工PS工zE; 指向该类型的指针 1) typedef的作用是将这个sruc定义成一个数据类型。 2)PSZE和 LPSIZE均表示指向SZE的指针,在16位系 统下有区别,在32位系统下没区别 3)suc可以认为是成员都是 public的类(cass)
关于CSize typedef struct tagSIZE { LONG cx; LONG cy; } SIZE, *PSIZE, *LPSIZE; 类型定义 指向该类型的指针 1)typedef的作用是将这个struct定义成一个数据类型。 2)PSIZE 和 LPSIZE 均表示指向SIZE的指针,在16位系 统下有区别,在32位系统下没区别。 3)struct可以认为是成员都是public的类(class)
class CSize public tagSIZE 重载构造函数 public: SIzeof CSize(int initcx int initcy) CSze(S工 zE initSize); CSize(POINT initpt)i 另外一个数据类 CSize(dword dwsize)i 型 低16位为cx 高16位为cy
class CSize : public tagSIZE { public: CSize(); CSize(int initCX, int initCY); CSize(SIZE initSize); CSize(POINT initPt); CSize(DWORD dwSize); 。。。 。。。 重载构造函数 另外一个数据类 型 低16位为cx 高16位为cy
比BO工。 perator=( SIZE SIZE) const; 较 BOOL operator!=(SIZE size)consti Dit void operator+=(SIZEsize) 值 v。id。 perator-=(S工 ZE SIze) z CSize operator+(SIZEsize)const cS立 ze operator-(S工 ZE SIze) const; CSize operator-oconst CPoint operator+(POINT point)consti CPoint operator-(POINT point) consti CRect operator+(const RECT* lpRect)const CRect operator-(const RECT* lpRect) const
BOOL operator==(SIZE size) const; BOOL operator!=(SIZE size) const; void operator+=(SIZE size); void operator-=(SIZE size); CSize operator+(SIZE size) const; CSize operator-(SIZE size) const; CSize operator-() const; CPoint operator+(POINT point) const; CPoint operator-(POINT point) const; CRect operator+(const RECT* lpRect) const; CRect operator-(const RECT* lpRect) const; 比 较 运 算 赋 值
CSize的用法 S工 ZE SIzEB。x1={20,40}; SIZE sizeBox2=[60,30 1 SIZE sizeBox3=sizeBoxl+sizeBox2 CSize s1zeBox(s立 zeRos1):「结果拷贝到 CSize sizeBigbox sizeBox )+sizeBox2 Ize SIZE
CSize的用法 SIZE sizeBox1={20,40}; SIZE sizeBox2={60,30}; SIZE sizeBox3=sizeBox1+sizeBox2; CSize SIZE 结果拷贝到 CSize sizeBox(sizeBox1); CSize sizeBigBox = sizeBox + sizeBox2;
与cSze类似的类: CPoint typedef struct tagPOINT LONG x LONG Y } POINT,*PPO工N,*工PPO工NT; class CPoint public tagPOINT public: CPointo CPoint(int init int init)i CPoint(PoInt initpt)
与CSize类似的类 : CPoint typedef struct tagPOINT { LONG x; LONG y; } POINT, *PPOINT, *LPPOINT; class CPoint : public tagPOINT { public: CPoint(); CPoint(int initX, int initY); CPoint(POINT initPt); 。。。 。。。 };