Chinaunix首页 | 论坛 | 博客
  • 博客访问: 343421
  • 博文数量: 82
  • 博客积分: 3353
  • 博客等级: 中校
  • 技术积分: 742
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-20 19:13
文章分类

全部博文(82)

文章存档

2015年(1)

2014年(1)

2013年(1)

2012年(12)

2011年(3)

2010年(25)

2009年(37)

2008年(2)

我的朋友

分类: C/C++

2012-03-21 16:27:56

Application  Framework定义:是一个完整的程序模型,具备标准应用程序所需的一切基本功能,像是文件存取、打印预览、数据交换....,以及这些功能的使用接口。这个模型需要通过application object(在MFC程序中就是派生自CWinApp的一个全局性对象)引爆。
凝聚性强、组织化强的类库,一组合作无间的类结合起来的大模型,彼此通过消息的流动而沟通,并且相互调用对方的函数以完成任务。
程序模型已经存在,程序员只要依个人需要加料就好:在派生类中改写虚拟函数,或在派生类中添加新的成员函数。
程序代码大结构掌握在Application Framework设计者手上。

纵览MFC
1. General Purpose classes
1).CObject
万类之首,凡派生自CObject,得以继承数个面向对象的重要性质:RTTI、Persistence、Dynamic
 Creation、Diagnostic。
2).数据处理类(collection classes)
Array, List , Map等
3).杂项类
CRect, CSize, CPoint, CTime, CString等
4).异常处理类
CException
2. Windows API classes
声名最著的一群类,这些类的成员函数所对应的各个Windows API函数。
1).CWinThread:
代表了MFC的一个线程。
2).CWinApp
代表了整个MFC应用程序。派生自CWinThread.
3).CWnd
所有窗口。凡派生自CWnd的类才能收到WM_窗口消息(WM_COMMAND除外)。
4).CCmdTarget
CWnd的父类。派生自它,类才能处理命令消息WM_COMMAND。这个类是消息映射和命令消息
传递的大部分关键。
5).GDI, DC, Menu类等。
3.Application framework classes
Document/View,这也是MFC跻身application framework的关键。
Document/View观念是希望把数据的本体和数据的显示分开处理,文件产生之际,必须动态创建
  Document/View/Frame三种对象,必须由Document Template管理之。

4.High level abstractions
视觉性UI对象属于此类,例如工具栏CToolBar等。

Afx全局函数

MFC宏
CObject 和 CRuntimeClass之中封装了数个所谓的object services,包括RTTI, Serialization, 动态产生对象等。

MFC数据类型

下面这些是和Win32程序共同使用的数据类型

BOOL:布尔值,取值为TRUE or FALSE

BSTR:32-bit 字符指针

BYTE:8-bit整数,未带正负号

COLORREF:32-bit数值,代表一个颜色值

DWORD:32-bit整数,未带正负号

LONG:32-bit整数,带正负号

LPARAM:32-bit整数,作为窗口函数或callback函数的一个参数

LPCSTR:32-bit指针,指向一个常数字符串

LPSTR:32-bit指针,指向一个字符串

LPCTSTR:32-bit指针,指向一个常数字符串,此字符串可以移植到Unicode和DBCS

LPTSTR:32-bit指针,指向一个字符串,此字符串可以移植到Unicode和DBCS

LPVOID:32-bit指针,指向一个未指定类型的数据

LPRESULT:32-bit数值,作为窗口函数或callback函数的返回值

UINT:在Win16中是一个16-bit 未带正负号整数,在Win32中是一个32-bit 未带   正负号整数,

WNDPROC:32-bit指针,指向一个窗口函数

WORD:16-bit 整数 ,未带正负号

WPARAM:窗口函数或callback函数的一个参数,在Win16中是16-bit,在Win32中是32-bit


下面这些是MFC独特的数据类型

POSITION:一个数值,代表collection对象(例如数组或链表)中的元素位置,常 用于MFC collection classes(即数据处理类,如CArray)

LPCRECT:32-bit指针,指向一个不变的RECT结构


L表示long指针, 这是为了兼容Windows 3.1等16位操作系统遗留下来的, 在win32中以及其他的32为操作系统中, long指针和near指针及far修饰符都是为了兼容的作用。没有实际意义。


P表示这是一个指针

C表示是一个常量

T在Win32环境中, 有一个_T宏, 这个宏用来表示你的字符是否使用UNICODE, 如果你的程序定义了UNICODE或者其他相关的宏, 那么这个字符或者字符串将被作为UNICODE字符串, 否则就是标准的ANSI字符串。

STR表示这个变量是一个字符串。


所以LPCTSTR就表示一个指向常固定地址的可以根据一些宏定义改变语义的字符串。

同样, LPCSTR就只能是一个ANSI字符串, 在程序中我们大部分时间要使用带T的类型定义。


LPCTSTR == const TCHAR *



阅读(610) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~