VC11

来源:互联网 发布:败家子知乎 编辑:程序博客网 时间:2024/05/16 18:41

CCachedDataPathProperty - [MFC]
类CCachedDataPathProperty实现了异步传输并在内存文件中缓冲的OLE控件属性。内存文件存储在RAM而不是磁盘中,这有利于快速的临时数据传送。同CAsyncMonikerFile和CDataPathProperty一样,类CCachedDataPathProperty也支持OLE控件中的异步标识(moniker)功能。采用CCachedDataPathProperty对象可以异步地从一个URL或文件传送数据并通过公有变量m_Cache存在内存文件中。所有的数据都存在内存文件中,如果不需要查看通知和接收方的响应,就不需要覆盖OnDataAvailable。例如,在传送一个大的GIF文件时,想通知控件有新数据到达,并告诉它需要刷新。这时就可以覆盖OnDataAvailable实现这个通知。类CCachedDataPathProperty是从类CDataPathProperty派生出来的。要了解有关如何在Internet应用中使用异步标识功能和ActiveX控件的更详细信息,请参阅联机文档“Visual C++程序员指南”中的以下主题:
 “Internet第一步:ActiceX控件”
 “Internet第一步:异步标识”
#include <afxctl.h>请参阅 CDataPathProperty

CCachedDataPathProperty类的成员
数据成员
m_Cache缓冲数据的CMemFile对象
数据成员
CCachedDataPathProperty::m_CacheCMemFile m_Cache;
说明
缓存数据的内存文件的类名。内存文件存放在RAM而不是磁盘上。
请参阅 CDataPathProperty

Tag:
编程博客 发表于02:55:00 | 阅读全文 | 评论 0 | 编辑 | 推荐
2005-09-01
CByteArray - [MFC]
类CByteArray支持以字节为单位动态建立数组。类CByteArray的成员函数与类CObArray的成员函数类似。因此,也可以参考类CObArray的文档。只需把函数参数或返回值中出现的CObject指针换成BYTE就可以了。例如,类CObArray中的函数:CObject* CObArray::GetAt( int <nIndex> ) const;在类CByteArray中对应的就是BYTE* CByteArray::GetAt( int <nIndex> ) const;CByteArray中包含了宏IMPLEMENT_SERIAL,以支持对象的串行化和转储。如果字节数组被存到了档案中,不管使用覆盖的操作符“<<”或成员函数Serialize,则其中的元素被串行化。注意 在使用数组之前,要调用SetSize设置它的大小并分配内存。如果没有使用SetSize,在数组中增加元素会引起数组内存空间频繁的重新分配以及数据拷贝。内存频繁的重新分配和数据拷贝会影响性能并造成内存碎片。如果需要对数组中每个元素的输出调试信息,就要把CDumpContext对象的深度设置为1或更大。要了解有关使用CByteArray的更详细信息,请参阅联机文档“Visual C++程序员指南”中的“收集”部分。#include <afxcoll.h>请参阅 CObArray

CByteArray类的成员
构造函数
CByteArray构造一个空的字节数组
边界
GetSize取数组中元素的个数(数组大小)
GetUpperBound返回数组的最大有效下标
SetSize设置数组元素的个数(数组大小)
操作
FreeExtra释放数组中当前已有数据的最大上界后所有未占用的内存
RemoveAll删除数组中所有的元素
元素存取
GetAt返回指定下标处的数组元素的值
SetAt给数组中指定下标的元素赋值,但不能动态增长数组(指定的下标不能越界)
ElementAt返回对数组中某个字节的临时参考
GetData允许访问数组中的元素。可以为NULL
数组增长
SetAtGrow给数组中指定下标的元素赋值,在下标越界时动态增长数组Add在数组末尾增添一个元素,必要时增长数组Append在数组末尾接上另一个数组,必要时增长数组
Copy把另一个数组的内容拷贝到本数组,必要时增长数组
插入/删除
InsertAt在指定的下标处插入元素(或另外一个数组的内容)
RemoveAt删除指定下标处的一个元素
操作符operator[]取指定下标处元素的值,或者给其赋值

Tag:
编程博客 发表于02:54:01 | 阅读全文 | 评论 0 | 编辑 | 推荐
2005-09-01
CBitmapButton - [MFC]
类CButton提供了对Windows按钮控件的操作。按钮控件是一个小的矩形子窗口,可以通过单击选中(按下)或不选中。按钮可以单独使用,也可以成组使用,它还可以具有文本标题。在用户单击它的时候,按钮通常要改变显示外观。典型的按钮控件有:复选框、单选钮和下压式按钮(pushbutton)。一个CButton对象可以是它们中的一种,这由它的按钮风格和成员函数Create的初始化决定。此外,类CButtonBitmap是从类CButton继承而来的,不过它支持按钮的图像标签。一个CButtonBitmap对象可以分别为它的四种状态(未按下、按下、获得焦点和禁止存取)设置不同的位图。既可以从对话框模板中创建一个按钮控件,也可以直接在代码中创建。
无论哪种情况,都要先调用构造函数CButton构造一个CButton对象,然后调用成员函数Create创建Windows按钮控件并应用到CButton对象上。在一个从类CButton派生出来的类中,构造可以一步完成。程序员可以为这个派生类编写一个构造函数,并在其中调用Create函数。如果想处理Windows的通知消息,如位图按钮控件发给它的父对象(通常是从CDialog继承来的)的消息,就要在父对象中加入消息映射入口以及处理每个消息的成员函数。每个消息映射入口的格式如下:ON_Notification(id, memberFxn)其中id指定了发送通知的控件的子窗口的ID,而memberFxn指定了处理该通知的父对象中的成员函数名。父对象的函数原型格式如下:afx_msg void memberFxn( );可能的消息映射入口如下:
映射入口 何时向父对象发送消息
ON_BN_CLICKED 用户单击按钮时
ON_BN_DOUBLECLICKED 用户双击按钮时
如果在对话框资源中创建了CButton对象,则在用户关闭该对话框时会自动撤消这个CButton对象。如果在窗口中创建了CButton对象,就可能需要自己撤消它。如果是用new函数在内存的堆中创建该对象的,则在用户关闭该窗口按钮控件时,必须用delete函数撤消它。如果在堆栈中创建了该对象,或者它嵌入在父对话框对象中,系统会自动撤消它。
#include <afxwin.h>
请参阅 CWnd, CComboBox, CEdit, CListBox, CScrollBar, CStatic,CBitmapButton, CDialog

CButton类的成员

构造函数
Cbutton构造一个CButton
对象初始化函数
Create创建Windows按钮控件并在CButton对象上应用

操作
GetState检索按钮控件的选中状态、加亮状态和获得焦点状态
SetState设置按钮控件的加亮状态
GetCheck检索按钮控件的选中状态
SetCheck设置按钮控件的选中状态
GetButtonStyle检索按钮控件的风格
SetButtonStyle设置按钮控件的风格
GetIcon检索此前调用
SetIcon设置的图标句柄
SetIcon指定一个在按钮上显示的图标
GetBitmap检索此前调用
SetBitmap设置的位图的句柄
SetBitmap设置在按钮上显示的位图
GetCursor检索此前调用
SetCursor设置的光标图像的句柄
SetCursor设置在按钮上显示的光标图像

可覆盖的函数
DrawItem可以覆盖它来绘制自定义的CButton对象

成员函数
CButton::CButton
CButton( );
说明
本函数用于构造一个CButton对象。
请参阅 CButton::CreateCButton::Create

BOOL Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT&rect,CWnd* pParentWnd, UINT nID );
返回值
调用成功时返回非零值,否则为0。
参数
lpszCaption指定按钮控件上的文本。
dwStyle指定按钮控件的风格。可以采用控件风格的各种组合。
rect指定按钮控件的大小和位置。既可以是一个CRect对象,也可以是一个RECT结构。
pParentWnd指定按钮控件的父窗口,通常是一个CDialog对象。注意不能为NULL。
nID指定按钮控件的ID号。
说明
构造一个CButton对象需要两步:首先调用构造函数,然后调用Create函数创建Windows按钮控件并在CButton对象上应用它。
如果设置了WS_VISIBLE风格,Windows将向该按钮控件发送所有用来激活和显示该按钮的消息。按钮控件上可用的窗口风格如下:
 WS_CHILD总是设置
 WS_VISIBLE 通常要设置
 WS_DISABLED很少使用
 WS_GROUP 成组按钮
 WS_TABSTOP 按钮按制表键次序排列
请参阅 CButton::CButton

CButton::DrawItem
virtual void DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct );
参数
lpDrawItemStruct指向结构DRAWITEMSTRUCT的一个长指针。结构中记录了要绘制的项的信息以及绘制的风格。
说明
当自定义按钮的可视属性发生变化时,由框架调用本函数。自定义的按钮的风格设置为BS_OWNERDRAW。可以覆盖本函数以实现自己的绘制函数。在此成员函数终止之前,应用必须重置lpDrawItemStruct中的所有显示上下文选中的GDI对象。也可参阅BS_style的值。
请参阅 CButton::SetButtonStyle, WM_DRAWITEM

CButton::GetBitmap
HBITMAP GetBitmap( ) const;
返回值
调用成功时返回位图的句柄。如果此前没有指定位图,则返回NULL。
说明
调用本成员函数可以取得此前调用SetBitmap为按钮指定的位图的句柄。
请参阅 CButton::SetBitmap, CBitmapButton::LoadBitmap, Bitmaps

CButton::GetButtonStyle
UINT GetBu
Tag:
编程博客 发表于02:53:00 | 阅读全文 | 评论 0 | 编辑 | 推荐
2005-09-01
CBrush - [MFC]
类CBrush封装了Windows图形设备接口(GDI)中的画刷。使用CBrush对象之前要构造它,然后传给需要画刷的CDC成员函数。画刷可以是实线的、阴影线的或图案的。要了解有关画刷的更详细信息,请参阅联机文档“Visual C++程序员指南”中的”图形对象”部分include <afxwin.h>
请参阅 CBitmap, CDC

CBrush类的成员

构造函数Cbrush构造一个CBrush对象

初始化函数
CreateSolidBrush用指定的实线初始化画刷
CreateHatchBrush用指定的阴影线初始化画刷
CreateBrushIndirect用结构LOGBRUSH中指定的风格、颜色和模式初始化画刷CreatePatternBrush用位图指定的模式初始化画刷
CreateDIBPatternBrush用独立于设备的位图(DIB)初始化画刷
CreateSysColorBrush创建一个使用系统缺省颜色的画刷

操作
FromHandle给出一个WindowsHBRUSH对象句柄时,返回一个指向CBrush对象的指针

属性
GetLogBrush取得一个LOGBRUSH结构
operator HBRUSH返回CBrush对象上的Windows句柄

成员函数
CBrush:: CBrush
CBrush( );
CBrush( COLORREF crColor );
throw( CResouceException );
CBrush( int nIndex, COLORREF crColor );
throw( CResouceException );
CBrush( CBitmap* pBitmap );
throw( CResouceExecption );
参数
crColor指定画刷的前景色(RGB方式)。如果画刷是阴影线型的,则指定阴影线的颜色。
nIndex指定画刷阴影线采用的风格,取值如下:
 HS_BDIAGONAL45度的向下影线(从左到右)
 HS_CROSS水平和垂直方向以网格线作出阴影
 HS_DIAGCROSS 45度的网格线阴影
 HS_FDIAGONAL 45度的向上阴影线(从左到右)
 HS_HORIZONTAL 水平的阴影线
 HS_VERTICAL 垂直的阴影线
pBitmap指向CBitmap对象的指针,该对象指定了画刷要绘制的位图。
说明
类CBrush一共有四个覆盖的构造函数。不带参数的那个构造函数构造一个未初始化的CBrush对象,在使用该对象之前需要另外初始化。如果使用了不带参数的那个构造函数,则必须用CreateSolidBrush、CreateHatchBrush、CreateBrushIndirect、CreatePatternBrush或CreateDIBPatternBrush来初始化返回的CBrush对象。如果使用了带参数的构造函数,则不再需要初始化CBrush对象。带参数的构造函数在出错时会产生一个异常,而不带参数的构造函数总是成功返回。只带有一个参数COLORREF的构造函数用指定的颜色构造一个实线型的画刷。颜色是一个RGB值,可以用WINDOWS.H中的宏RGB构造出来。带两个参数的构造函数构造一个阴影线型的画刷,参数nIndex指定了阴影线模式的指数(index)。参数crColor指定了画刷的颜色。带有一个CBitmap型参数的构造函数构造一个模式化的画刷。参数指定一个位图。该位图应该是已经用CBitmap::CreateBitmap、CBitmap::CreateBitmapIndirect、CBitmap::LoadBitmap或CBitmap::CreateCompatiableBitmap建立或加载的位图。填充模式下的位图的最小尺寸为8像素×8像素。
请参阅 CBrush::CreateSolidBrush,
CBrush::CreateHatchBrush,
CBrush::CreateBrushIndirect,
CBrush::CreatPatternBrush,
CBrush::CreateDIBPatternBrush,
CGdiObject::CreateStockObject

CBrush::CreateBrushIndirect
BOOL CreateBrushIndirect( const LOGBRUSH* lpLogBrush ):
返回值
调用成功时返回非零值,否则为0。
参数
lpLogBrush指向LOGBRUSH结构的指针,结构中记录了画刷的相关信息。
说明
本函数用结构LOGBRUSH中指定的风格、颜色和模式初始化画刷。以后,该画刷可以被选为任何设备上下文的当前画刷。采用黑白位图(1位面、每像素1位)创建的画刷使用当前的文本颜色和背景色。位值置为0的像素点将用当前的文本颜色绘制。位值置为1的像素点将用当前的背景色绘制。
请参阅
CBrush::CreateDIBPatternBrush,
CBrush::CreatePatternBrush,
CBrush::CreateSolidBrush,
CBrush::CreateHatchBrush,
CGdiObject::DeleteObject,
::CreateBrushIndirect
CGdiObject::CreateStockObject,

CBrush::CreateDIBPatternBrush
BOOL CreateDIBPatternBrush( HGLOBAL hPackedDIB, UINT nUsage );
BOOL CreateDIBPatternBrush( const void* lpPackedDIB, UINT nUsage );
返回值
调用成功时返回非零值,否则为0。
参数
hPackedDIB指定一个全局内存对象,其中包含了一个压缩的独立于设备的位图(DIB)
nUsage指明BITMAPINFO数据结构(压缩的DIB中的一部分)的bmiColors[]成员是否包含明确的RGB值或指向当前逻辑调色板的索引值。参数必须取以下值之一:
 DIB_PAL_COLORS颜色表由一个16位的索引数组组成。
 DIB_RGB_COLORS颜色表中包含字母式的RGB颜色值。
下面这个值只在第二个函数中有效:
DIB_PAL_INDICES未提供颜色表。位图中包含了指向画刷选中的设备上下文的逻辑调色板的索引。
lpPackedDIB指向一个包括了BITMAPINFO结构的压缩的DIB。BITMAPINFO结构后紧跟着的是定义位图像素的字节数组。
说明
本函数用DIB指定的模式初始化画刷。画刷随后就可以被任何支持
Tag:
编程博客 发表于02:52:20 | 阅读全文 | 评论 0 | 编辑 | 推荐
2005-09-01
CBitmapButton - [MFC]
类CBitmapButton用于创建用位图而不是文本做标签的按钮控件。CBitmapButton对象最多可包括4个位图,分别代表按钮所处的不同状态:未按下(或正常)、按下(或选中)、获得焦点和被禁止存取。只有第一个位图是必须的,其它三个可以不提供。位图按钮图像包括图像本身以及图像的边框。边框在表示按钮的不同状态时很有用。例如,按钮获得焦点时的位图与未按下(或正常)状态的位图相同,但是在边框中要么嵌入了由间断线组成的矩形,要么嵌入了由粗实线组成的矩形。禁止存取状态的按钮的位图通常和正常状态的一样,但是颜色的对比度较小,就象变灰的菜单选项一样。这些位图的尺寸可以不同,但都当成和正常状态下位图一样的大小处理。不同的应用对位图有不同的组合应用。如下所示:
未按下 按下 获得焦点 禁止存取 应用
x 类Bitmap
ⅹ ⅹ 没有设置WS_TABSTOP的按钮
ⅹ ⅹ ⅹ ⅹ 带有所有状态的对话框按钮
ⅹ ⅹ ⅹ 设置WS_TABSTOP风格的对话框按钮
在创建一个位图按钮控件时,设置BS_OWNERDRAW则指明按钮是自定义的(用户自己绘制的)。这样,Windows就会为该按钮发送WM_MEASUREITEM和WM_DRAWITEM消息,由框架处理这些消息并维护按钮的外观。在窗口的客户区创建一个位图按钮的步骤如下:
1. 为按钮创建1到4个位图。
2. 构造CBitmapButton对象。
3. 调用Create函数创建Windows按钮控件,并把它加到CBitmapButton对象上。
4. 调用成员函数LoadBitmaps加载位图资源。
在对话框控件中包含位图按钮的步骤如下:
1. 为按钮创建1到4个位图。
2. 创建一个对话框模板,其中有一个自定义的按钮放在需要位图按钮的位置。模板中按钮的大小无关紧要。
3. 把按钮的标题设置为“MYIMAGE”一类的字符串,并为按钮定义一个类似于IDC_MYIMAGE的代号。
4. 在应用的资源脚本中,分别为每个给该按钮创建的图像一个ID,ID的值为在步骤3中的标题后加上如下的一个字母——U、D、F或X,分别代表正常、按下、获得焦点和禁止存取状态下的按钮。例如,标题设为“MYIMAGE”时,ID就应该是“MYIMAGEU”、“MYIMAGED”、 “MYIMAGEF”和“MYIMAGEX”。位图的ID必须用引号括起来,否则资源编辑器就会为资源赋上一个整数值,MFC在加载图像时就会失败。
5. 在应用的对话框类(从类CDialog继承而来)中加上一个CBitmapButton成员对象。
6. 在CDialog对象的OnInitDialog例程中调用CBitmapButton对象的AutoLoad函数,参数是按钮的ID和CDialog对象的this指针。如果想处理Windows的通知消息,如位图按钮控件发给它的父对象(通常是从CDialog继承来的)的BN_CLICKED消息,就要在从CDialog继承来的对象中加入消息映射入口以及处理每个消息的成员函数。CBitmapButton对象发出的通知和CButton对象发出的通知一样。
类CToolBar对位图对象的实现有些不同。要了解有关CBitmapButton的更详细信息,请参阅联机文档“Visual C++程序员指南”的“控件主题”部分。

#include <afxext.h>

CBitmapButton类的成员
构造函数
CBitmapButton构造一个CBitmapButton对象
LoadBitmaps从应用的资源文件中加载一个或多个命名的位图初始化对象,并把位图加到对象上
AutoLoad把对话框中的一个按钮与一个CbitmapButton对象联系上,加载位图并调整按钮的大小以放下位图
操作
SizeToContent 调整按钮的大小以放下整个位图

成员函数
CBitmapButton::AutoLoad
BOOL AutoLoad ( UINT nID, CWnd* pParent );
返回值
调用成功时返回非零值,否则为0。
参数
nID按钮的控制ID号。
pParent指向拥有此按钮的对象的指针。
说明
本函数把对话框中的一个按钮与一个CBitmapButton对象联系上,加载位图并调整按钮的大小以放下位图。调用AutoLoad函数可以初始化对话框中的自定义按钮为位图按钮。使用此函数的注意事项请参阅类CBitmapButton的说明部分。
请参阅 CBitmapButton::LoadBitmaps,
CBitmapButton::SizetoContent

CBitmapButton:: CBitmapButton
CBitmapButton( );
说明
创建一个CBitmapButton对象。在创建这个C++对象之后,可以调用CButton::Create来创建Windows按钮控件并且把它加到CBitmapButton对象中。
请参阅
CBitmapButton::loadBitmaps,
CBitmapButton::AutoLoad,
CBitmapButton::SizeToContent,
CButton::Create

CBitmapButton::LoadBitmaps
BOOL LoadBitmaps( LPCTSTR lpszBitmapResource, LPCTSTRlpszBitmapResource Sel = NULL, LPCTSTR lpszBitmapResourceFocus =NULL, LPCTSTR lpszBitmap ResourceDisabled = NULL );
BOOL LoadBitmaps( UINT nIDBitmapResource, UINTnIDBitmapResourceSel = 0, UINT nIDBitmapResourceFocus = 0, UINTnIDBitmapResourceDisabled = 0 );
返回值
调用成功时返回非零值,否则为0。
参数
lpszBitmapResource指向一个以null结尾的字符串,字符串中包含了位图按钮正常(未按下)状态下的位图名称。该参数是必须的。
lpszBitmapResourceSel指向一个以null结
Tag:
编程博客 发表于02:51:50 | 阅读全文 | 评论 0 | 编辑 | 推荐
2005-09-01
CAsyncMonikerFile - [MFC]
CAsyncMonikerFile提供了在ActiveX控件(以前的OLE控件)中使用异步标识的功能。它是由CMonikerFile派生而来,CMonikerFile又是由COleStreamFile派生出来的。CAsyncMonikerFile使用IMoniker接口可以异步访问任意数据流,包括从一个URL中异步地装载文件。这些文件可以是ActiveX控件的数据路径特性。异步标识主要用于支持Internet的应用和ActiveX控件,在文件传输中提供了一个灵活的界面。一个主要的例子就是使用CDataPathProperty来提供ActiveX控件的异步特性。在一个长时间的交换进程中,CDataPathProperty对象将重复地被调用,以确定新数据的有效性。如果要了解有关在Internet应用中如何使用异步标识和ActiveX控件,请参阅联机文档“Visual C++程序员指南”中的以下章节:
 “Internet初步:异步标识”
 “Internet初步:ActiveX控件”
#include<afxole.h>
请参阅 CMoniker,CDataPathProperty,联机文档Win32 SDK中“OLE程序员参考”中的“异步和同步标识”。

CAsyncMonikerFile类的成员
构造函数
CasyncMonikerFile构造一个CAsyncMonikerFile对象
操作
GetBinding获取一个异步传输约束的指针
GetFormatEtc获取流中数据的格式
可覆盖的函数
Close关闭并释放所有的资源
CreateBindStatusCallback创建一个实现
IBindStatusCallback的COM对象
GetBindInfo通过OLE系统库调用来获取被创建约束类型的信息
GetPriority通过OLE系统库调用来获取约束的优先级

续表
OnDataAvailable在异步约束操作中,调用它来向客户提供有效的数据
OnLowResource当资源比较少时被调用
OnProgress在数据下载过程中调用它来标示进程
OnStarBinding当约束被启动时调用
OnStopBinding当异步传输被终止时调用Open异步地打开一个文件

成员函数
CAsyncMonikerFile::CAsyncMonikerFile
CAsyncMonikerFile( );
说明
构造一个CAsyncMonikerFile对象。它不创建IBindHost接口。IBindHost只有在Open函数中提供时,才使用IBindHost。如果想了解有关IBindHost接口的介绍,请参阅联机文档“ActiveXSDK”。
请参阅 CDataPathPropery,CAsyncMonikerFile::Open

CAsyncMonikerFile::Close
Virtual void Close( );
说明
通过调用此函数来关闭和释放所有资源。可在未打开或已关闭的文件上调用它。
请参阅 CAsyncMonikerFile::Open

CAsyncMonikerFile::CreateBindStatusCallback
virtual IUnknown*CreateBindStatusCallback(IUnknown*pUnkControlling);
返回值
如果pUnkControlling不为NULL,函数返回一个指向支持IBindStatusCallback的新COM对象上的内部IUnknown指针。如果pUnkControlling为NULL,函数返回一个指向支持IBindStatusCallback的新COM对象上的IUnknown指针。
参数
pUnkControlling未知控制(外部IUnknown)的指针。如果未使用聚集,pUnkControlling为NULL。
说明
CAsyncMonikerFile需要一个实现IBindStatusCallback的COM对象。MFC实现这样一个可聚集的对象。可覆盖CreateBindStatusCallback来返回自己的COM对象。可以通过调用带有对自己COM对象未知控制的CreateBindStatusCallback来使自己的COM对象能够聚集MFC的实现。使用CCMDTarget的COM支持的COM对象能够使用CCmdTarget::GetControllingUnknown来获取未知控制。换句话说,自己的COM对象可通过对CreateBindStatusCallback(NULL)的调用代表MFC的实现。不带参数调用CreateBindStatusCallback。如果想了解有关IBindStatusCallback接口的细节,请参阅联机文档“平台SDK”。如果想更多的关于异步约束的信息,请参阅联机文档“平台SDK”中的“如何使用异步约束和进行存储”。有关聚集的讨论,请参阅联机文档“平台SDK”中的“聚集”。

CAayncMonikerFile::GetBindInfo
virtual DWORD GetBindInfo( ) const;
返回值
获取IBindStatusCallBack的设置值。如果要了解有关IBindStatusCallBack接口的介绍信息,请参阅联机文档“ActiveX SDK”。
说明
从一个异步标识的客户调用它来告诉异步标识约束的方式。缺省实现将约束设置为异步的方式来使用一个存储器和数据压入模式。如果想改变约束的行为,请覆盖此函数。这样做的理由之一就是可以约束使用数据弹出模式而不是数据压入模式。在数据弹出模式中,客户驱动约束操作而且只有在读取标识时,它才提供数据。在数据压入模式中,标识驱动异步约束操作并且连续通知客户端新数据何时可用。

CAsyncMonikerFile::GetBinding
Ibinding* GetBinding( ) const;
返回值
指向Ibinding接口的指针,此接口在异步传输开始时形成。如果因为某种原因,传输没有异步进行,则返回NULL。
说明
可调用此函数获取指向异步传输约束的指针。这样,编程人员可通过IBinding接口,如IBinding::Abort,IBinding::Pause和IBinding::Resume,控制异步传输进程。

CAsyncMonikerFile::GetFormatEtc
FORMATETC* GetFormatEtc( ) const;
返回值
指向记录正打开的流的Windows结构FORMATETC的指针。如果标识没有约束、它不是异步的,或异步操作没有开始,则返回NULL。
说明
可调用此函数获取
Tag:
编程博客 发表于02:50:02 | 阅读全文 | 评论 0 | 编辑 | 推荐
2005-09-01
CArray - [MFC]
template<class TYPE,class ARG_TYPE>class CArray:public CObject
参数
TYPE
模板参数指定存储在数组中的对象的类型。TYPE是一个由CArray返回的参数。ARG_TYPE
模板参数指定用于访问存储在数组中对象的参数类型。通常是一个对TYPE的参考。ARG_TYPE是一个传递给CArray的参数。
说明
CArray类支持与CArray相似的数组,但是必要时可以动态压缩并扩展。数组索引从0开始。可以决定是固定数组上界还是允许当添加元素时扩展当前的边界。内存对上界是连续地分配空间,甚至一些元素可为空。和CArray一样,CArray索引元素的访问时间是不变的,与数组大小无关。

提示
在使用一个数组之前,使用SetSize建立它的大小和为它分配内存。如果不使用SetSize,则为数组添加元素就会引起频繁地重新分配和拷贝。频繁地重新分配和拷贝不但没有效率,而且导致内存碎片。
如果需要一堆数组中的个别数据,必须设置CDumpContext对象的深度为1或更大。
此类的某成员函数调用全局帮助函数,它必须为CArray的大多数使用而定制。请参阅宏和全局量部分中的“类收集帮助器”。当从一个CArray对象中移去元素时,帮助函数DestructElements被调用。当添加元素时,帮助函数ConstructElements被调用。数组类的派生与列表的派生相似。如果要了解关于使用CArray的更多信息,请参阅联机文档“Visual C++程序员指南”中的“收集”。
#include<afxtempl.h>
请参阅 CObArray,DestructElement,ConstructElements,Collection ClassHelpers

CArray类的成员
构造函数
Carray构造一个空数组
属性
GetSize获得此数组中的元素数
GetUpperBound返回最大的有效索引值
SetSize设置包含在此数组中的元素数
操作
FreeExtra释放大于当前上界的未使用的内存
RemoveAll从此数组移去所有元素
元素访问
GetAt返回在给定索引上的值
SetAt设定一个给定索引的值;数组不允许扩展
ElementAt返回一个对数组中元素指针的临时参考
GetData允许对数组中的元素访问。可以为NULL
扩展数组
SetAtGrow为一个给定索引设置值;如果必要,扩展数组
Add在数组的末尾添加元素;如果必要,扩展数组
Append在数组上附加另一个数组;如果必要,扩展数组
Copy把另一个数组拷贝到数组上;如果必要,扩展数组
插入/移去
InsertAt在指定的索引上插入一个元素(或另一个数组中的所有元素)
RemoveAt在指定的索引上移去一个元素
运算符
[ ]在特定索引上设置或获取元素

成员函数
CArray::Add
int Add(ARG_TYPE newElement);
throw(CmemoryException);
返回值
添加元素的索引。
参数
ARG_TYPE
模板参数指定应用数组中元素的参数的类型。
newElement
被加入此数组的元素。
说明
在数组的末尾加入一个新的元素,数组长度加1。如果SetSize已经使用nGrowBy值比1大,则内存按其分配。无论怎样,上界只增长1。
示例
//example for CArray:Add
CArray<Cpoint.Cpoint> ptArray;
Cpoint pt(10.20);
ptArray.Add(pt);
//Element 0
ptArray.Add(Cpoint(30,40));
//Element 1
请参阅 CArray:SetAt,CArray::SetAtGrow,CArray::InsertAt,CArray::operator[]

CArray::Append
int Append(const CArray& src);
返回值
第一个附加元素的索引。
参数
src附加到数组的元素的源。
说明
调用此成员函数将一个数组的内容附加到另一个数组的末尾。数组必须是同一种类型。如果必要,Append将分配更多的内存来存储附加到数组上的元素。
请参阅 CArray::Copy

CArray::CArray
CArray( );
返回值
构造一个空数组。数组一次扩展一个元素。
请参阅 CObArray::CObArray

CArray::Copy
void Copy(const CArray& src);
参数
Src被拷贝到数组中的元素的源。
说明
使用此成员函数将一个数组的元素拷贝到另一个数组中。调用此成员函数用另一个数组的元素复写数组的元素。Copy不会释放内存;但是,如果必要,Copy可以为拷贝到数组的元素分配更多的内存。请参阅 CArray::Append

CArray::Element
TYPE&ElementAt(int nIndex);
返回值
数组元素的参考。
参数
TYPE指定数组元素类型的模板参数。
nIndex比0大或比0小的整数索引,并且小于或等于由GetUpperBound返回的值。
说明
返回一个对数组中指定元素的临时参考。它用于实现数组的左边界分配运算符。
请参阅 CArray::operator[]

CArray::FreeExtra
void FreeExtra( );
说明
释放任何当数组扩展时所分配的额外的内存空间。此函数不影响数组的大小和上界。

CArray::GetAt
TYPE GetAt(int nIndex) const;
返回值
当前在索引上的数组元素。
参数
TYPE指定数组元素类型的模板参数。
nIndex比0大或比0小的整数索引,并且小于或等于由GetUpperBound返回的值。
说明
返回特定索引的数组元素。注意 传递一个负值或一个比由GetUpperBound返回值大的值将会引起失败。
请参阅 CArray::SetAt,CArray::operator[],ConstElements

CArray::GetData
const TYPE* GetData( ) const;TYPE* GetData( );
返回值
指向数组元素的指针。
参数
TYP
Tag:
编程博客 发表于02:49:08 | 阅读全文 | 评论 0 | 编辑 | 推荐
2005-09-01
CArchiveException - [MFC]
CArchiveException对象标识一个串行化异常条件。CArchiveException类包括一个公共数据成员,它可以确定异常的原因。CArchiveException在CArchive成员函数被构造并可以在一个CATCH表达式的范围内访问这些对象。原因代码与运行系统无关。如果要了解关于异常进程的更多信息,请参阅联机文档“Visual C++程序员指南”中的“异常”。#include<afx.h>请参阅 CArchive,AfxThrowArchiveException,Exception Processing

CArchiveException类的成员

数据成员
m_cause 确定异常原因

构造函数
CArchiveException构造一个CArchiveException对象

成员函数
CArchiveException::CArchiveExceptionCArchiveException(int cause=CArchiveException::none);
参数
cause枚举类型。它确定了的异常的原因。关于枚举列表,请参阅m_cause数据成员。说明
构造一个CArchiveException对象,在对象中存储cause的值。可以在堆上创建一个CArchiveException对象并且它或让全局函数AfxTrowArchiveException处理它。
不要直接构造程序,而要调用全局函数AfxTrowArchiveException。

数据成员
CArchiveException::m_cause

说明
指定异常的原因。此数据成员是一个int类型的公共变量。它的值由CArchiveException枚举类型定义。枚举类型和它的含义如下:
1.CArchiveException::none 没有错误发生l CArchiveException::generic 没有指定错误
2.CArchiveException::readOnly 企图向一个为装载打开的归档文件中写入
3.CArchiveException::endOfFile 当读一个对象时达到文件末尾
4.CArchiveException::writeOnly 企图由一个为存储打开的归档文件中读取
5.CArchiveException::badClass 企图将一个对象读入一个错误的对象类型中
6.CArchiveException::badSchema 企图读入一个不同版本类的对象
注意 这些CarchiveException导致枚举类型与CfileException导致枚举不同。

Tag:
编程博客 发表于02:48:02 | 阅读全文 | 评论 0 | 编辑 | 推荐
2005-09-01
CArchive - [MFC]
CArchive没有基类。
CArchive允许以一个永久二进制(通常为磁盘存储)的形式保存一个对象的复杂网络,它可以在对象被删除时,还能永久保存。可以从永久存储中装载对象,在内存中重新构造它们。使得数据永久保留的过程就叫作“串行化”。
可以把一个归档对象看作一种二进制流。象输入/输出流一样,归档与文件有关并允许写缓冲区以及从硬盘读出或读入数据。输入/输出流处理一系列ASCII字符,但是归档文件以一种有效率、精练的格式处理二进制对象。
必须在创建一个CArchive对象之前,创建一个CFile对象。另外,必须确信归档文件的装入/存储与文件的打开模式是兼容的。每一个文件只限于一个活动归档文件。
当构造一个CArchive对象时,要把它附加给表示一个打开文件的类CFile(或派生类)的对象上。还要指定归档文件将用于装载还是存储。CArchive对象不仅可以处理首要类型,而且还能处理为串行化而设计的CObject_派生类的对象。一个串行化类通常有一个Serialize成员函数并且使用DECLARE_SERIAL和IMPLEMENT_SERIAL宏。这些在CObject类中有所描述。
重载提取(>>)和插入(<<)是方便的归档编程接口。它支持主要类型和CObject派生类。
CArchive还支持使用MFC Windows套接字类CSocket和CSocketFile编程。IsBufferEmpty成员函数也支持这种使用。如果要了解有关CArchive的更多信息,请参阅联机文档“Visual C++ 程序员指南”中的“串行化(永久对象)” 和“Windows套接字:在归档文件中使用套接字”
include<afx.h>
请参阅 CFile,CObject,CSocket,CSocketFile
CArchive类的成员
数据成员
m_pDocument 指向被串行化的CDocument对象
构造函数
Carchive 创建一个Carhcive对象
Abort在不异常的情况下,关闭归档文件
Close冲掉未写入数据并且释放与CFile的连接

基础输入/输出
Flush从归档文件缓冲区中冲掉未写入数据
运算符>>装载对象和归档文件的主要类型
运算符<<存储对象和归档文件的主要类型
Read读入原始类型
Write写入原始类型
WriteString写一行文本
ReadString读一行文本
状态
GetFile获得此归档文件的
CFile对象指针
GetObjectSchema由Serialize函数调用来确定被非串行化的对象的版本SetObjectSchema在归档文件中存储对象概要
IsLoading确定归档文件是否被装载
IsStoring确定归档文件是否被存储
IsBufferEmpty确定在一个Windows Socket接收过程中缓冲区是否被清空
对象输入/输出
ReadObject调用一个用于装载的Serialize函数
WriteObect调用一个用于装载的Serialize函数
MapObject在没有对文件串行化的映射中放置对象,但是此映射对参考的子对象有效
SetStoreParams设置哈希表的大小和映射的块的大小,在串行化的过程中识别唯一的对象
LoadParams设置装载数组扩展的大小。必须在被装载对象之前或调用MapObject或ReadObject之前
ReadClass读入一个原先存储在WriteClass中的类的参考
WriteClass把对CRuntime的参考写入Carchive
SerializeClass根据CArchive方向,读入或写入对CArchive对象的类的参考

成员函数
CArchive::Abort
void Abort( );
说明
调用此函数在不异常的情况下关闭归档文件。CArchive析构程序将调用Close,它将冲掉任何没有被存储在相关CFile对象中的数据。这会引起异常。
当获取这些异常时,有一个好的方法就是使用Abort,这样析构CArchive
对象就不会再引起异常。当处理异常时,在失败时CArchive::Abort将不会异常,因为与CArchive::Clsoe不同,Abort忽略失败。
如果使用new在堆上分配CArchive对象,则在关闭文件之后,必须删除它。
请参阅
CArchive::Close,
CFile::Close

CArchive::CArchive
CArchive(CFile*pFile,UINTnMode,int nBufSize=4096,void*lpBuf=NULL );
throw(CmemoryException,CArchiveException,CFileException);
参数
pFileCFile
对象的指针。CFile对象是永久数据的最终的源或目标。
nMode标识。它指定了对象是否从归档文件中装载或存储到文件中去。
nMode参数必须有下列值之一:l CArchive::load 从归档文件装载数据。CFile只读。l CArchive::store 把数据保存到归档文件中。允许CFile写操作。l CArchive::bNoFlushOnDelete 当归档文件析构程序被调用时,防止归档文件自动调用Flush。如果设定了此标识,则在析构程序被调用之前必须负责调用Close。如果不这样做,数据就会崩溃。
nBufSize
指定内部文件缓冲区大小的整数,以字节计算。注意缺省的缓冲区
大小为4096字节。如果例程归档大的对象,使用大一些的缓冲区,即多个文件缓冲区,那么将会提高例程的执行效率。
lpBuf
指向nBufSize大小的提供缓冲区的指针。如果不指定这个参数,归档文 件从本地堆为归档文件分配一个缓冲区并且当对象被毁弃时,释放缓冲 区。归档文件不能释放一个提供的缓冲区。
说明
构造CArchive对象并且指定它将用于装载或存储对象。在创建归档文件之后,不能改变这个指定内容。不能使用CFile操作来改变文件的状态直到已经关闭归档文件时。任何这样的操作都将会毁弃归档文件的完整性。通过由GetFile成员函数获得归档文件的文件
Tag:
编程博客 发表于02:47:04 | 阅读全文 | 评论 0 | 编辑 | 推荐
2005-09-01
CAnimateCtrl - [MFC]
CAnimateCtrl类提供了Windows通用动画控件的功能。此控件只对运行在Windows 95和Windows NT 3.51版及其更高版本下的程序有效。动画控件是显示AVI(视听交错)格式──标准Windows视/听格式片段的矩形窗口。一个AVI片段是一系列位图帧,就象电影。动画控件只能运行简单的AVI片段。特别的,通过动画控件运行的片段必须符合下列要求:
1.必须确切地是一个视频流并且它必须至少有一个帧。
2.文件中至多有两个流(典型地,其它流,比如音频流,尽管动画控件忽略音频流)。
3.片段必须是非压缩的或用RLE8压缩的。
4.在视频流中不允许调色板改变。
可以将AVI片段作为一个AVI资源加入到自己的应用中去,或作为一个独立的AVI文件伴随应用。
既然当AVI片段显示时,线程继续执行,所以一个动画控件的一个通用使用就是在一个长时间的操作时确定系统是活动状态。例如,当系统查找一个文件时,Windows 95 Explorer的查找对话框显示一个移动的放大镜。
如果在一个对话框或由使用对话编辑器的对话资源创建一个CAnimateCtrl对象,当关闭对话框时,它会自动被毁弃。
如果在一个窗口中创建CAnimateCtrl对象,可能需要去毁弃它。如果在栈上创建CAnimateCtrl对象,它会自动地被毁弃。如果使用new函数在堆上创建CAnimateCtrl对象,必须调用delete来毁弃它。如果由CAnimateCtrl派生一个新类并且给这个类分配内存,则要覆盖CAnimateCtrl析构程序来释放分配的内存。 如果要了解有关使用CAnimateCtrl的更多信息,请参阅联机文档“VisualC++程序员指南”中的“控件主题”和“使用CAnimateCtrl敗?include<afxcmn.h>请参阅 CAnimateCtrl::Create中的动画控件风格,ON_CONTROL

CAnimateCtrl类的成员:
构造函数:
CAnimateCtrl构造一个CAnimateCtrl对象
初始化:
Create创建一个动画控件并将它附加给CanimateCtrl对象
操作:
Open由一个文件打开一个动画控件或资源并显示第一帧
Play播放不带声音的AVI片段Seek播放AVI片段的选定的一帧
Stop停止播放AVI片段
Close关闭原先打开的AVI片段

成员函数:
CAnimateCtrl::CAnimateCtrl
CAnimateCtrl( )
说明:
构造一个CAnimateCtrl对象。在执行创建的对象上的其它任何一个操作前,都必须调用Create成员函数。
请参阅CAnimateCtrl::Create

CAnimateCtrl::Close
BOOL Close( )
返回值
如果成功,则返回非零值,否则为0。
说明
使用Close成员函数关闭以前在动画控件中打开的AVI片段(如果有的话),并且从内存中移去。
请参阅CAnimateCtrl::Open

CAnimateCtrl::Create
BOOL Create(DWORD dwStyle, const RECT&rect,CWnd*pParentWnd,UINT nID);
返回值
如果成功,则返回非零值,否则为0。
参数
dwStyle
指定动画控件的风格。可使用任一窗口组合及在控件说明下描述的动画控件风格。
rect
指定动画控件的位置和大小。它可以是一个CRect对象或一个RECT结构。
pParantWnd
指定动画控件的父窗口,通常是一个CDialog。它不能是NULL。
nID
指定动画控件的ID。

说明
可以用两步构造一个CAnimateCtrl。首先,调用构造程序,然后调用Create。它创建动画控件并将其附加给CAnimateCtrl对象。
动画控件可使用下列窗口风格:
1.WS_CHILD 经常使用
2.WS_VISIBLE 通常使用
3.WS_DISABLED 很少使用
除了以上列出的窗口风格以外,还可能使用一种或多种下面列出的动画控件的动画控件风格:
 ACS_CENTER 使得AVI片段在动画控件窗口里居中并且当AVI片段被打开时,保持动画控件的大小和位置不变。如果没有设定此风格,则当AVI片段被打开时,控件将重新定义为AVI片段中图象的大小。
 ACS_TRANSPARENT 使用透明背景而不是在AVI片段中指定的背景颜色绘制AVI片段。
 ACS_AUTOPLAY 使得AVI片段一打开就开始运行。当片段播放时,它将自动重复。
请参阅CAnimateCtrl::CAnimateCtrl,
CAnimateCtrl::Open,
CAnimateCtrl::Play,
CAnimateCtrl::Seek

CAnimateCtrl::Open
BOOL Open(LPCTSTR lpszFileName);
BOOL Open(UNIT nID);
返回值
如果成功,则返回非零值,否则为0。
参数
lpszFileNameCString
对象或一个指向一个以空终止符结尾的字符串的指针。此字符串包含了AVI文件的名字或一个AVI资源的名字。如果此参数为空,则系统关闭以前动画控件打开的AVI片段,如果有的话。
nID
AVI资源识别器。如果此参数为空,则系统关闭以前动画控件打开的AVI片段,如果有的话。
说明
调用此函数来打开一个AVI片段并显示它的第一帧。如果动画控件为ACS_AUTOPLAY风格,则动画控件

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/guomei/archive/2009/02/22/3922853.aspx

原创粉丝点击