分享

MFC原理介绍

 水斯宁 2017-10-26 发布于辽宁

一:基础 男瓜

1、MFC封装了大部分的Windows API函数,由C格式的函数库升级为类库。

2、Windows程序开发由面向过程的开发模式晋升为面向对象的开发模式,从而使得Windows软件开发效率大大地提高了。

例如:要将两个字符串连接,在C语言中使用的是strcpy和strcat的函数,而CString类则使用“+”或 “+=”符号操作即可。

对比MFC和Win32两个开发平台由此可见一斑。

3、MFC是面向对象开发,因此代码维护和修改的效率比Win32高很多。

比如说:MFC的程序代码一般是50个类,每个类有20个函数便于维护;

而Win32程序的代码一共有1000个全局函数,函数没有分类使代码维护难度加大。

4、MFC开发平台还辅助了应用程序向导(MFC AppWizard)和类向导(ClassWizard)等工具,进一步的提高了Windows软件的开发效率。

二:MFC的六大关键技术

MFC所有封装类一共200多个,但是MFC的内部技术不只是简单的封装。

MFC的内部总共有六大关键技术,架构起了整个MFC的开发平台。

MFC的六大关键技术包括:

a)MFC程序的初始化过程;

b)消息映射机制;

c)运行时类型识别(RTTI);

d)动态创建;

e)永久保存;

f)消息传递。

{六大关键技术的目的是为了提高开发效率,开发者只要在局部做简单地修改,即可处理大部分窗口事物。}

三:封装类的原理

CTime类的主要成员
函数原型函数说明
CTime( );缺省构造函数,构造一个无效时间对象
CTime( const CTime& timeSrc );拷贝构造函数,从另一个对象复制时间
CTime( time_t time );构造函数,从C语言时间句柄构造时间
CTime( int nYear, int nMonth, int nDay, int nHour, int nMin, int nSec, int nDST = -1 );构造函数,通过年月日时分秒及毫秒构造时间
CTime( const SYSTEMTIME& sysTime, int nDST = -1 );从SYSTEMTIME结构体对象构造时间
CTime( const FILETIME& fileTime, int nDST = -1 );从FILETIME结构体对象构造时间
static CTime GetCurrentTime( );获取当前时间
time_t GetTime( ) const;从CTime对象获取C语言时间句柄
int GetYear( ) const;获取年份
int GetMonth( ) const;获取月份
int GetDay( ) const;获取日期
int GetHour( ) const;获取小时
int GetMinute( ) const;获取分钟
int GetSecond( ) const;获取秒
int GetDayOfWeek( ) const;获取星期
运算符“==”、“!=”、“>”、“<”、“>=”、“<>比较两个时间对象

1、通过封装CTime类我们可以认为,一个封装类往往有1个或一些核心的成员数据:

a)CTime中的time_t m_time;

b)CSocket类中的SOCKET m_hSocket;

c)CRect基类中的left,top,right,bottom;

d)CWnd中的HWND m_hWnd;

几乎封装类所有的成员函数,都是围绕这个或这些核心的成员数据在工作的。

C语言主要时间函数:
函数原型函数说明
time_t time( time_t *timer );获取当前时间,返回值是一个时间句柄
struct tm *localtime( const time_t *timer );将一个时间句柄转换为年月日时分秒的结构体对象
time_t mktime( struct tm *timeptr );将一个年月日时分秒保存到一个时间句柄

四:消息映射机制(下文分解)

MFC原理介绍

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约