精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VB和Basic>>〓〓.VB电子文档集锦.〓〓>>《老猫:VB声明API》>>VB API:场景设备函数 第二页

主题:VB API:场景设备函数 第二页
发信人: winsy(鹰派)
整理人: winsy(2003-03-10 13:31:58), 站内信件
ExcludeUpdateRgn 

VB声明 
Declare Function ExcludeUpdateRgn Lib "user32" Alias "ExcludeUpdateRgn" (ByVal hdc As Long, ByVal hwnd As Long) As Long 
说明 
从专用设备场景剪裁区去掉指定窗口的刷新区域。这防止对无效区绘图(该无效区将推迟一点再刷新) 
返回值 
Long,见ExcludeClipRect函数返回值 
参数表 
参数 类型及说明 
hdc Long,设备场景,其剪裁区将被修改以排除hwnd窗口的刷新区 
hwnd Long,窗口句柄 
在vb中使用 
设您要完成一个较长或复杂的绘图操作,该函数可允许您避免画到现在没有遮盖而随后即将画的区域。这可提高性能并消除闪烁效果
 

ExtCreateRegion 

VB声明 
Declare Function ExtCreateRegion Lib "gdi32" Alias "ExtCreateRegion" (lpXform As xform, ByVal nCount As Long, lpRgnData As RGNDATA) As Long 
说明 
根据世界转换修改区域 
返回值 
Long,执行成功为已转换区域的句柄,失败则为0 
参数表 
参数 类型及说明 
lpXform xform,将用于由lpRgnData指定区域的转换 
nCount Long,lpRgnData数据结构或缓冲区的字节数 
lpRgnData RGNDATA,用GetRegionData定义区域时载入的一个结构 
注解 
在win95下,只有缩放和平移转换才能用该函数。它不支持旋转和剪切
 

ExtSelectClipRgn 

VB声明 
Declare Function ExtSelectClipRgn Lib "gdi32" Alias "ExtSelectClipRgn" (ByVal hdc As Long, ByVal hRgn As Long, ByVal fnMode As Long) As Long 
说明 
将指定区域组合到设备场景的当前剪裁区 
返回值 
Long,返回下列常数之一,以描述所得剪裁区:
COMPLEXREGION:区域边界互相交叠
SIMPLEREGION:区域边界没有互相交叠
NULLREGION:区域为空
ERRORAPI:发生了错误 
参数表 
参数 类型及说明 
hdc Long,剪裁区将被修改的设备场景的句柄 
hRgn Long,源区域句柄。若fnMode为RGN_COPY,它可为NULL 
fnMode Long,下列常数之一: 
RGN_AND 新剪裁区包括即属hRgn又属当前剪裁区的部分 
RGN_COPY 新剪裁区为hRgn区域 
RGN_DIFF 新剪裁区为当前剪裁区除掉其在hRgn区内的部分 
RGN_OR 新剪裁区包括属hRgn或当前属当前剪裁区的部分 
RGN_XOR 新剪裁区包括属hRgn或当前属当前剪裁区的部分,但要除去同属两者的部分 
注解 
本函数对hRgn区域没有影响,执行后可毁去(destroy)该区域
 

FillRgn 

VB声明 
Declare Function FillRgn Lib "gdi32" Alias "FillRgn" (ByVal hdc As Long, ByVal hRgn As Long, ByVal hBrush As Long) As Long 
说明 
用指定刷子填充指定区域 
返回值 
Long,执行成功为非零值,失败则为0 
参数表 
参数 类型及说明 
hdc Long,设备场景句柄 
hRgn Long,以数据设备坐标填充的区域句柄 
hBrush Long,要用的刷子的句柄 


FrameRgn 

VB声明 
Declare Function FrameRgn Lib "gdi32" Alias "FrameRgn" (ByVal hdc As Long, ByVal hRgn As Long, ByVal hBrush As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long 
说明 
用指定刷子围绕指定区域画一个外框 
返回值 
Long,执行成功返回非零值,失败为0 
参数表 
参数 类型及说明 
hdc Long,设备场景句柄 
hRgn Long,将数据设备坐标填充的区域句柄 
hBrush Long,将用的刷子句柄 
nWidth Long,垂直边框宽度(以设备单元为单位) 
nHeight Long,水平边框高度(以设备单元为单位) 


GetBoundsRect 

VB声明 
Declare Function GetBoundsRect Lib "gdi32" Alias "GetBoundsRect" (ByVal hdc As Long, lprcBounds As RECT, ByVal flags As Long) As Long 
说明 
获取指定设备场景的边界矩形。每个设备场景都有一个边界矩形,程序员可用它来堆放表示当前图象边界的信息 
返回值 
Long,出错为0,否则为下列常数之一:
DCB_SET:边界矩形非空
DCB_RESET:边界矩形为空
DCB_ENABLE:边界矩形正被堆放
DCB_DISABLE:边界矩形当前没有被堆放 
参数表 
参数 类型及说明 
hdc Long,边界矩形对应的设备场景 
lprcBounds RECT,装载设备场景hdc的当前边界矩形 
flags Long,可设为常数DCB_RESET以清除边界矩形,否则设为零 
注解 
详情参考SetBoundsRect
 

GetClipBox 

VB声明 
Declare Function GetClipBox Lib "gdi32" Alias "GetClipBox" (ByVal hdc As Long, lpRect As RECT) As Long 
说明 
获取完全包含指定设备场景剪裁区的最小矩形 
返回值 
Long,返回下列常数之一,以描述所得剪裁区:
COMPLEXREGION:区域边界互相交叠
SIMPLEREGION:区域边界没有互相交叠
NULLREGION:区域为空
ERRORAPI:发生了错误 
参数表 
参数 类型及说明 
hdc Long,设备场景句柄  
lpRect RECT,装载包含设备场景剪裁区的矩形 


GetClipRgn 

VB声明 
Declare Function GetClipRgn Lib "gdi32" Alias "GetClipRgn" (ByVal hdc As Long, ByVal hRgn As Long) As Long 
说明 
获取设备场景当前剪裁区 
返回值 
Long,下列常数之一:
1——执行成功,剪裁区存在
0——执行成功,没有定义剪裁区
-1——出错 
参数表 
参数 类型及说明 
hdc Long,想要访问的设备场景剪裁区 
hRgn Long,已存在的区域句柄。该区域将被设为设备场景当前剪裁区 
注解 
hRgn装载剪裁区拷贝。它后面的改变不影响剪裁区。该函数只能载入由应用程序设置的剪裁区,那些由BeginPaint一类函数设置的内部剪裁区不能被函数访问
 

GetDC 

VB声明 
Declare Function GetDC Lib "user32" Alias "GetDC" (ByVal hwnd As Long) As Long 
说明 
获取指定窗口的设备场景 
返回值 
Long,指定窗口的设备场景句柄,出错则为0 
参数表 
参数 类型及说明 
hwnd Long,将获取其设备场景的窗口的句柄。若为0,则要获取整个屏幕的DC 
注解 
若窗口所属类具有CS_OWNDC, CS_CLASSDC 或 CS_PARENTDC样式,则获取的设备场景属窗口或类专有。vb的窗体和图片框控件也是这种情况,它用该函数取得的结果和控件的hdc属性相同(在autoredraw为FALSE时)。您无须考虑取回的窗体或图片框控件设备场景的默认状态,特别是绘图对象。另外,默认状态随着窗体和控件autoredraw属性的设置而不同。在设备场景释放前您必须回复其状态为初始值。对于没有CS_OWNDC, CS_CLASSDC 或 CS_PARENTDC样式的窗口的设备场景,可从通用windows缓存中获取,其状态为默认值。缓存中可用设备场景数量是有限的,因此只要可能就释放设备场景
用本函数获取的设备场景一定要用ReleaseDC函数释放,不能用DeleteDC
 

GetDCEx 

VB声明 
Declare Function GetDCEx Lib "user32" Alias "GetDCEx" (ByVal hwnd As Long, ByVal hrgnclip As Long, ByVal fdwOptions As Long) As Long 
说明 
为指定窗口获取设备场景。相比GetDC,本函数提供了更多的选项 
返回值 
Long,执行成功为指定窗口设备场景句柄。出错则为0 
参数表 
参数 类型及说明 
hwnd Long,窗口句柄 
hrgnclip Long,窗口剪裁区 
fdwOptions Long,标志字。根据下列常数设置各位: 
DCX_CACHE 不管窗口类的样式,从windows缓存获取设备场景 
DCX_CLIPCHILREN 所有可见的子窗口区都要从DC的剪裁区中排除 
DCX_CLIPSIBLINGS 窗口hWnd上的所有可见兄弟窗口都要从DC的剪裁区中排除 
DCX_EXCLUDERGN 从DC剪裁区中排除由hrgnclip指定的区域 
DCX_EXCLUDEUPDATE 从设备场景剪裁区中排除刷新区域 
DCX_INTERSECTRGN 由hrgnclip指定的区域与设备场景剪裁区相交 
DCX_INTERSECTUPDATE 指定区域与设备场景刷新区域相交 
DCX_LOCKWINDOWUPDATE 该标志为允许向窗口绘图,即使它由于LockWindowUpdate的调用被锁住 
DCX_NORESETATTRS 设备场景释放后不被重置为默认状态 
DCX_PARENTCLIP 放弃CS_PARENTDC类样式设置。DC的起点设为hWnd窗口的左上角 
DCX_WINDOW A device context is returned for the entire window rectangle rather than just the client area of the window 
DCX_VALIDATE Combine with DCX_INTERSECTUPDATE, validates the clipping region 
注解 
若窗口所属类具有CS_OWNDC, CS_CLASSDC 或 CS_PARENTDC样式,则获取的设备场景属窗口或类专有。这时,设备场景状态不能从初值修改。vb的窗体和控件通常是这种情况。否则,置DCX_CACHE位以从通用windows缓冲区恢复设备场景。若不置该位,则函数返回0。DC的状态位默认设置。从缓存获取的设备场景用过后要用ReleaseDC函数释放以防止系统死锁,因为windows只有5个缓存DC可用
其他情况参见GetDC函数注解
 

GetDCOrgEx 

VB声明 
Declare Function GetDCOrgEx Lib "gdi32" Alias "GetDCOrgEx" (ByVal hdc As Long, lpPoint As POINTAPI) As Long 
说明 
获取指定设备场景起点位置(以屏幕坐标表示)。例如,设DC起点为窗口客户区左上角,则该函数返回值为该角在屏幕中的位置(以屏幕像素坐标表示) 
返回值 
Long,执行成功为非零值,否则为零 
参数表 
参数 类型及说明 
hdc Long,设备场景句柄 
lpPoint POINTAPI,装载设备场景起点的屏幕坐标 
示例:在窗体模块中使用时,该代码装载窗体客户区左上角坐标(以屏幕坐标表示)。它也是窗体hDC属性的起点 
Dim dl&
Dim pt As POINTAPI
dl& = GetDCOrgEx(hDC, pt) 


GetDeviceCaps 

VB声明 
Declare Function GetDeviceCaps Lib "gdi32" Alias "GetDeviceCaps" (ByVal hdc As Long, ByVal nIndex As Long) As Long 
说明 
根据指定设备场景代表的设备的功能返回信息 
返回值 
Long,参见GetDeviceCaps索引表 
参数表 
参数 类型及说明 
hdc Long,要查询其设备的信息的设备场景 
nIndex Long,根据GetDeviceCaps索引表所示常数确定返回信息的类型 


GetGraphicsMode 

VB声明 
Declare Function GetGraphicsMode Lib "gdi32" Alias "GetGraphicsMode" (ByVal hdc As Long) As Long 
说明 
确定是否允许增强图形模式(世界转换) 
返回值 
Long,下列常数之一:
GM_COMPATIBLE:图形模式兼容win16
GM_ADVANCED:允许世界转换 
参数表 
参数 类型及说明 
hdc Long,其模式将被测试的设备场景 
注解 
只有Windows NT支持世界转换
 

GetMapMode 

VB声明 
Declare Function GetMapMode Lib "gdi32" Alias "GetMapMode" (ByVal hdc As Long) As Long 
说明 
为特定设备场景调入映象模式 
返回值 
Long,当前设备场景的映象模式。关于映象模式的说明参见SetMapMode函数 
参数表 
参数 类型及说明 
hdc Long,其模式将被测试的设备场景 


GetRegionData 

VB声明 
Declare Function GetRegionData Lib "gdi32" Alias "GetRegionDataA" (ByVal hRgn As Long, ByVal dwCount As Long, lpRgnData As RgnData) As Long 
说明 
装入描述一个区域信息的RgnData结构或缓冲区 
返回值 
Long,如果结构足够大以装入区域的数据,返回1;出错时返回0。如果lpRgnData不够大,不能装入区域数据,则返回需要的结构大小 
参数表 
参数 类型及说明 
hRgn Long,包含信息的区域的句柄 
dwCount Long,RgnData结构的大小 
lpRgnData RgnData,这个结构用以装入区域信息 
注解 
RgnData是一个描述区域的定长结构。Buffer是存放区域数据的缓冲区。缓冲区实际需要的大小取决于区域的复杂程度(显然,1字节是永远不够的)。有两个选择:
1、将RgnData重定义为永远不会用到的一个大尺寸。这是需要的,因为vb不允许动态重定义结构的大小
2、分配一个字节数组并用它来代替RgnData结构。这要求将As RgnData换为As Byte来改变函数的API声明,并且传送字节数组的第一个元素
如果以后要访问RGNDATAHEADER结构的元素,需要用一个内存拷贝例程将数据从缓冲区拷贝到一个特别定义的RGNDATAHEADER结构中
 

GetRgnBox 

VB声明 
Declare Function GetRgnBox Lib "gdi32" Alias "GetRgnBox" (ByVal hRgn As Long, lpRect As RECT) As Long 
说明 
获取完全包含指定区域的最小矩形 
返回值 
Long,下列常数之一,以描述当前剪裁区:
COMPLEXREGION:该区域有互相交叠的边界
SIMPLEREGION:该区域边界没有互相交叠
NULLREGION:区域为空
ERRORAPI:发生了错误 
参数表 
参数 类型及说明 
hRgn Long,区域句柄 
lpRect RECT,矩形结构,装载完全包含指定区域的矩形 

[关闭][返回]