一:基础 男瓜
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 ); | 将一个年月日时分秒保存到一个时间句柄 |
四:消息映射机制(下文分解)
|