当前位置:文档之家› Winapi32函数说明

Winapi32函数说明

Contents

[Trial version] 文本和字体函数
[Trial version] EnumFonts
[Trial version] ExtTextOut
[Trial version] GetAspectRatioFilterEx
[Trial version] GetCharABCWidths
[Trial version] GetCharABCWidthsFloat
[Trial version] GetCharacterPlacement
[Trial version] GetCharWidth
[Trial version] GetFontData
[Trial version] GetFontLanguageInfo
[Trial version] GetGlyphOutline
[Trial version] GetKerningPairs
[Trial version] GetOutlineTextMetrics
[Trial version] GetRasterizerCaps
[Trial version] GetTabbedTextExtent
[Trial version] GetTextAlign
[Trial version] GetTextCharacterExtra
[Trial version] GetTextCharset
[Trial version] GetTextCharsetInfo
[Trial version] GetTextColor
[Trial version] GetTextExtentExPoint
[Trial version] GetTextExtentPoint
[Trial version] GetTextFace
[Trial version] GetTextMetrics
[Trial version] GrayString
[Trial version] PolyTextOut
[Trial version] RemoveFontResource
[Trial version] SetMapperFlags
[Trial version] SetTextAlign
[Trial version] SetTextCharacterExtra
[Trial version] SetTextColor
[Trial version] SetTextJustification
[Trial version] TabbedTextOut
[Trial version] TextOut





[Amber demo]

文本和字体函数,共三页。第一页,第二页,第三页





AddFontResource
在Windows系统中添加一种字体资源


CreateFont
用指定的属性创建一种逻辑字体


CreateFontIndirect
用指定的属性创建一种逻辑字体


CreateScalableFontResource
为一种TureType字体创建一个资源文件,以便能用API函数AddFontResource将其加入Windows系统


DrawText
将文本描绘到指定的矩形中


DrawTextEx
与DrawText相似,只是加入了更多的功能


EnumFontFamilies
列举指定设备可用的字体


EnumFontFamiliesEx
列举指定设备可用的字体


EnumFonts
列举指定设备可用的字体


ExtTextOut
经过扩展的文本描绘函数。也请参考SetTextAlign函数


GetAspectRatioFilterEx
用SetMapperFlags要求Windows只选择与设备当前纵横比相符的光栅字体时,本函数可判断纵横比大小


GetCharABCWidths
判断TureType字体中一个或多个字符的A-B-C大小


GetCharABCWidthsFloat
查询一种字体中一个或多个字符的A-B-C尺寸


GetCharacterPlacement
该函数用于了解如何用一个给定的字符显示一个字串


GetCharWidth
调查字体中一个或多个字符的宽度


GetFontData
接收一种可缩放字体文件的数据





[Amber demo]


EnumFonts


VB声明


Declare Function EnumFonts Lib "gdi32" Alias "EnumFontsA" (ByVal hDC As Long, ByVal lpsz As String, ByVal lpFontEnumProc As Long, ByVal lParam As Long) As Long


说明


列举指定设备可用的字体


注解


该函数使用的参数与EnumFontFamilies函数是一样的,工作原

理也大致相同。只是EnumFontFamilies会利用ENUMLOGFONT 和 NEWTEXTMETRIC结构向回调函数传递附加的信息,而不是使用LOGFONT 和 TEXTMETRIC结构。请参考EnumFontFamilies函数,那里有更详细的解释




Top





[Amber demo]


ExtTextOut




VB声明




Declare Function ExtTextOut Lib "gdi32" Alias "ExtTextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal wOptions As Long, lpRect As Rect, ByVal lpString As String, ByVal nCount As Long, lpDx As Long) As Long




说明




经过扩展的文本描绘函数。也请参考SetTextAlign函数




返回值




Long,非零表示成功,零表示失败。会设置GetLastError




参数表




参数

类型及说明


hdc

Long,设备场景的句柄


x,y

Long,以逻辑坐标表示的一个点,指定了绘图起点


wOptions

Long,下述标志常数的任意组合




ETO_CLIPPED
将文本剪切出指定的矩形



ETO_GLPYH_INDEX
lpString是一个字样索引表。参考对GetCharacterPlacement函数的说明。只适用于Win95



ETO_OPAQUE
在正式描绘文本前,用当前的背景色填充矩形

lpRect

Rect,指定一个矩形,用于对文本进行格式化处理。可指定长整数0,在不用矩形区域的前提下描绘文本


lpString

String,欲描绘的字串


nCount

Long,字串中要显示出来的字符数


lpDx

Long,如果不是零,这个参数就代表指向一个Long值数组的指针。该数组对每一对字符的间距进行了说明(采用逻辑单位)。其中第一个条目是第一和第二个字符的间距;第二个条目是第二和第三个字符的间距;以此类推。如果为零,函数就使用字体的默认间距设置




Top







[Amber demo]


GetAspectRatioFilterEx



VB声明



Declare Function GetAspectRatioFilterEx Lib "gdi32" Alias "GetAspectRatioFilterEx" (ByVal hdc As Long, lpAspectRatio As SIZE) As Long



说明



我们可用SetMapperFlags函数要求Windows只选择与设备当前纵横比相符的光栅字体。这个函数可判断那种特殊选择过程中使用的纵横比是多大



返回值



Long,非零表示成功,零表示失败。会设置GetLastError



参数表



参数

类型及说明

hdc

Long,一个设备场景的句柄

lpAspectRatio

SIZE,用于装载纵横比的一个结构



Top






[Amber demo]


GetCharABCWidths



VB声明



Declare Function GetCharABCWidths Lib "gdi32" Alias "GetCharABCWidthsA" (ByVal hdc As Long, ByVal uFirstChar As Long, ByVal uLastChar As Long, lpabc As ABC) As Long



说明



判断TureType字体中一个或多个字符的A-B-C大小



返回值



Long,非零表示成功,零表示失败。会设置GetLastError



参数表



参数

类型及说明

hdc

Long,设备场

景的句柄

uFirstChar

Long,欲调查A-B-C尺寸的第一个字符的ASCII值

uLastChar

Long,欲调查A-B-C尺寸的最后一个字符的ASCII值

lpabc

ABC,在ABC结构数组中的第一个条目。这个数组填充了指定的字符大小设置。该数组的长度必须足够大,足以容下要求的所有字符

注解



对于非TureType字体用GetCharWidth函数





Top






[Amber demo]


GetCharABCWidthsFloat



VB声明



Declare Function GetCharABCWidthsFloat Lib "gdi32" Alias "GetCharABCWidthsFloatA" (ByVal hdc As Long, ByVal iFirstChar As Long, ByVal iLastChar As Long, lpABCF As ABCFLOAT) As Long



说明



查询一种字体中一个或多个字符的A-B-C尺寸



返回值



Long,非零表示成功,零表示失败。会设置GetLastError



参数表



参数

类型及说明

hdc

Long,设备场景的句柄

iFirstChar

Long,欲调查A-B-C尺寸的第一个字符的ASCII值

iLastChar

Long,欲调查A-B-C尺寸的最后一个字符的ASCII值

lpABCF

ABCFLOAT,在ABCFLOAT结构数组中的第一个条目。这个数组填充了指定的字符大小设置。该数组的长度必须足够大,足以容下要求的所有字符

注解



和GetCharABCWidths不同,这个函数适用于任何字符。ABC值是以浮点数的形式返回的,而且可能不是整数——具体取决于用这个函数处理非TureType字体时采用的转换方式



适用平台



Windows NT





Top






[Amber demo]


GetCharacterPlacement




VB声明




Declare Function GetCharacterPlacement Lib "gdi32" Alias " GetCharacterPlacementA" (ByVal hdc As Long, ByVal lpsz As String, ByVal n1 As Long, ByVal n2 As Long, lpGcpResults As GCP_RESULTS, ByVal dw As Long) As Long




说明




该函数用于了解如何用一个给定的字符显示一个字串




返回值




Long,非零表示成功,零表示失败。会设置GetLastError




参数表




参数

类型及说明


hdc

Long,设备场景的句柄


lpsz

String,欲分析的字串


n1

Long,字串的长度


n2

Long,若在dw参数中指定了GCP_MAXEXTENT常数,那么一旦显示的字串超出了由该参数指定的宽度(用逻辑单位),函数就会停止处理字串


lpGcpResults

GCP_RESULTS,在这个结构中装载为这个字串计算出来的信息


dw

Long,下述常数的一个或多个:




GCP_CLASSIN
lpGcpResults结构中的lpClass数组包含了字串中各字符的分类信息



GCP_DIACRITIC
在计算时将发音符和“废”字符考虑在内



GCP_DISPLAYZWG
显示某些字符集中使用的不可见字符,根据它们在一个词中的位置修改字符



GCP_GLPYPHSHAPE
允许对字样(字面)进行特殊处理。根据GetFontLanguageInfo函数的结果使用



GCP_JUSTIFY
调整

字样位置,对字串进行对齐处理,使其与n2参数指定的范围相符



GCP_JUSTIFYIN
lpGcpResults结构中的lpDX参数包含了计算过程中使用的对齐粗细设置



GCP_LIGATE
如当前字体支持,就用连字技术将字符合并成单独一个字符



GCP_MAXEXTENT
请参考对n2参数的说明



GCP_USERKERNING
计算字符位置时,使用字距表(如果有的话)可用其他标志对希伯来和阿拉伯字体进行特殊处理。这类语言按照从右到左的顺序显示文字,而且具体显示的字样由字符在一个词中的位置决定



Top







[Amber demo]


GetCharWidth, GetCharWidth32, GetCharWidthFloat



VB声明



Declare Function GetCharWidth& Lib "gdi32" Alias "GetCharWidthA" (ByVal hDC As Long, ByVal iFirstChar As Long, ByVal iLastChar As Long, lpBuffer As Long)
Declare Function GetCharWidth32& Lib "gdi32" Alias "GetCharWidth32A" (ByVal hdc As Long, ByVal iFirstChar As Long, ByVal iLastChar As Long, lpBuffer As Long)
Declare Function GetCharWidthFloat& Lib "gdi32" Alias "GetCharWidthFloatA" (ByVal hdc As Long, ByVal iFirstChar As Long, ByVal iLastChar As Long, pxBuffer As Single)



说明



调查字体中一个或多个字符的宽度。在Win32环境中,请使用GetCharWidth32函数。用GetCharWidthFloat则可获得小数宽度



返回值



Long,非零表示成功,零表示失败。会设置GetLastError



参数表



参数

类型及说明

hDC

Long,设备场景的句柄

iFirstChar

Long,要调查宽度的第一个字符的ASCII值

iLastChar

Long,要调查宽度的最后一个字符的ASCII值

lpBuffer

Long,指定Long值数组的第一个条目。该数组容纳了字体的字符宽度设置

pxBuffer

Single,指定Single值数组的第一个条目。该数组容纳了字体的字符宽度设置

注解



对于TureType字体,GetCharABCWidths可获得更详细的信息





Top






[Amber demo]


GetFontData


VB声明


Declare Function GetFontData Lib "gdi32" Alias "GetFontDataA" (ByVal hdc As Long, ByVal dwTable As Long, ByVal dwOffset As Long, lpvBuffer As Any, ByVal cbData As Long) As Long


说明


接收一种可缩放字体文件的数据。随后,可用这些数据将字体信息嵌入一个文档。如果需要在文档使用一种特殊字体,同时这种字体在大多数系统中都不常见,而且程序员希望文档无论如何都要显示这种字体,那么这种技术就相当有用了


在VB里使用


未经测试
Use with VB:Untested




Top





[Amber demo]


GetFontLanguageInfo



VB声明



Declare Function GetFontLanguageInfo Lib "gdi32" Alias "GetFontLanguageInfo" (ByVal hdc As Long) As Long



说明



返回目前选入指定设备场景中的字体的信息



返回值



Long,如返回零,表示是简单字体;GCP_ERROR表示

出错。否则,返回下述一个或多个标志:



GCP_DBCS

双字节字符集

GCP_DIACRITIC

字体包含了发音字符

FLI_GLYPHS

字体包含了通常不会显示出来的字样

GCP_GLYPHSHAPE

字体包含了特殊字符,用于字样显示由除字符值以外的其他因素决定的场合。例如显示字样由一个字符在单词中位置决定,或者显示单个“连字”,指出这是两个字符值的组合

GCP_KASHIDA

在阿拉伯字体中使用

GCP_LIGATE

字体包含了连字字样

GCP_USERKERNING

字体包含了字距表

GCP_REORDER

字体必须记录下来,以便正确显示。随同希伯来和阿拉伯字体使用

参数表



参数

类型及说明

hdc

Long,设备场景的句柄

注解



从这个函数返回的值可用于设置GetCharacterPlacement函数的标志





Top






[Amber demo]


GetGlyphOutline


VB声明


Declare Function GetGlyphOutline Lib "gdi32" Alias "GetGlyphOutlineA" (ByVal hdc As Long, ByVal uChar As Long, ByVal fuFormat As Long, lpgm As GLYPHMETRICS, ByVal cbBuffer As Long, lpBuffer As Any, lpmat2 As MAT2) As Long


说明


取得TureType字体中构成一个字符的曲线信息。主要用于将文本转换成曲线,以及用于字体的特殊处理(比如造字程序。无论如何,都要求程序员掌握高深的字体技术)。请参考由微软发布的TureType字体规格书,其中对这个字体进行了更详细的解释




Top





[Amber demo]


GetKerningPairs



VB声明



Declare Function GetKerningPairs Lib "gdi32" Alias "GetKerningPairsA" (ByVal hdc As Long, ByVal cPairs As Long, lpkrnpair As KERNINGPAIR) As Long



说明



取得指定字体的字距信息



返回值



Long,返回的字距对数量,零表示失败。会设置GetLastError



参数表



参数

类型及说明

hdc

Long,设备场景的句柄

cPairs

Long,KERNINGPAIR结构在数组中的数量,由lpkrnpair参数指定。如果将这个参数与lpkrnpair设置成零,可判断出字距表的大小

lpkrnpair

KERNINGPAIR,指定KERNINGPAIR结构数组中的第一个条目

注解



参考KERNINGPAIR
返回以后,结构会针对数组中的每个条目象下面这样设置字段:
wFirst指定一个双字符序列的第一个字符;wSecond指定第二个字符。iKernAmount字段指定指定这两个字符的字间距。
例如,假设第一个字符是"f",第二个是"i"。那么在这两个字符一个紧接一个显示出来时,字间距就是添加到默认字符间距上的一个逻辑距离。这个值通常为负,因为系统通常会令两个字符靠得更近





Top






[Amber demo]


GetOutlineTextMetrics


VB声明


Declare Function GetOutlineTextMetrics Lib "gdi32" Alias "GetOutlineTextMetricsA" (ByVal hdc As Long, ByVal cbData As Long, lpotm As OUTLINETEX

TMETRIC) As Long


说明


接收与TureType字体内部特征有关的详细信息。请参考微软公司发布的TureType字体规格文件,它提供了这个函数的进一步信息




Top





[Amber demo]


GetRasterizerCaps



VB声明



Declare Function GetRasterizerCaps Lib "gdi32" Alias "GetRasterizerCaps" (lpraststat As RASTERIZER_STATUS, ByVal cb As Long) As Long



说明



了解系统是否有能力支持可缩放的字体。利用得到的结果,可判断那种系统中是否允许使用TureType字体



返回值



Long,非零表示成功,零表示失败。会设置GetLastError



参数表



参数

类型及说明

lpraststat

RASTERIZER_STATUS,这个结构用于装载光栅信息

cb

Long,欲复制到结构中的字符数

注解



结构目前的大小是6个字符,并包含在RASTERIZER_STATUS结构的第一个整数中





Top






[Amber demo]


GetTabbedTextExtent



VB声明



Declare Function GetTabbedTextExtent Lib "user32" Alias "GetTabbedTextExtentA" (ByVal hdc As Long, ByVal lpString As String, ByVal nCount As Long, ByVal nTabPositions As Long, lpnTabStopPositions As Long) As Long



说明



判断一个字串占据的范围,同时考虑制表站扩充的因素。也请参考TabbedTextOut函数



返回值



Long,低16位包含了文本宽度,采用设备场景的逻辑坐标表示。高16位则包含了文本高度。零意味着出错



参数表



参数

类型及说明

hdc

Long,设备场景的句柄

lpString

String,欲计算的字串

nCount

Long,字串中的字符数

nTabPositions

Long,lpnTabStopPositions数组中的制表站数量。如果是零,则lpnTabStopPositions也应是NULL(需另行创建一个函数声明,将这个参数声明成ByVal nTabPositions&)。在这种情况下,制表站会根据当前字体的平均字符宽度,设置成默认的8字符间距。如nTabPositions是1,那么制表站间距就会以lpnTabStopPositions数组的第一个条目为准

lpnTabStopPositions

Long,指定制表站位置数组的第一个条目。这种位置是按升序用设备坐标指定的

注解



进行这种计算的时候,剪切区不会考虑在内





Top






[Amber demo]


GetTextAlign




VB声明




Declare Function GetTextAlign Lib "gdi32" Alias "GetTextAlign" (ByVal hdc As Long) As Long




说明




接收一个设备场景当前的文本对齐标志




返回值




Long,当前的文本对齐标志。GDI_ERROR表示失败。会设置GetLastError。文本的对齐方法由几个常数的组合决定。其中每个常数都来自下述不同的组别。参考下面总结的文本对齐标志




水平对齐标志

TA_CENTER
文本在约束矩形内居中显示



TA_LEFT
文本在约束矩形内左对齐(默认设置)



TA_RIGHT
文本在约束矩形内右对齐

垂直对齐标志

定义文本输出函数的Y参数的含义




TA_BASELINE
Y参数指定字体基线的位置



TA_BOTTOM
Y参数指定约束矩形底边的位置



TA_TOP
Y参数指定约束矩形顶边的位置(默认设置)

当前位置

TA_NOUPDATECP
文本输出函数不使用设备场景当前的绘图位置



TA_UPDATECP
文本输出函数使用设备场景当前的绘图位置。完成绘图后,输出函数会对当前位置进行更新。文本输出函数的X和Y参数会被忽略——绘图会以当前位置为起点

其他

TA_RTLREADING
文本输出从右到左进行。仅在Windows95下适用于希伯来和阿拉伯字体

参数表




参数

类型及说明


hdc

Long,设备场景的句柄


注解




参考对SetTextAlign函数的说明,进一步了解文本对齐标志的情况






Top







[Amber demo]


GetTextCharacterExtra



VB声明



Declare Function GetTextCharacterExtra Lib "gdi32" Alias "GetTextCharacterExtraA" (ByVal hdc As Long) As Long



说明



判断额外字符间距的当前值。请参考SetTextCharacterExtra函数,了解进一步的情况



返回值



Long,返回Windows描绘文本时于字符间添加的额外空间大小



参数表



参数

类型及说明

hdc

Long,设备场景的句柄



Top






[Amber demo]


GetTextCharset



VB声明



Declare Function GetTextCharset Lib "gdi32" Alias "GetTextCharset" (ByVal hdc As Long) As Long



说明



接收当前选入指定设备场景的字体的字符集标识符



返回值



Long,字符集标识符。DEFAULT_CHARSET代表默认字符集;-1表示出错



参数表



参数

类型及说明

hdc

Long,设备场景的句柄



Top






[Amber demo]


GetTextCharsetInfo



VB声明



Declare Function GetTextCharsetInfo Lib "gdi32" Alias "GetTextCharsetInfo" (ByVal hdc As Long, lpSig As FONTSIGNATURE, ByVal dwFlags As Long) As Long



说明



获取与当前选定字体的字符集有关的详细信息



返回值



Long,字符集标识符。DEFAULT_CHARSET代表默认字符集;-1表示出错



参数表



参数

类型及说明

hdc

Long,设备场景的句柄

lpSig

FONTSIGNATURE,用于装载字符集信息的结构。有关Unicode字体签名(signature)的资料可在Unicode规格文件中找到

dwFlags

Long,已保留,设为零



Top






[Amber demo]


GetTextColor



VB声明



Declare Function GetTextColor Lib "gdi32" Alias "GetTextColor" (ByVal hdc As Long) As Long



说明



判断当前字体颜色。通常也称为“前景色”



返回值



Long,文字的当前RGB颜色设置。如果出错,会返回CLR_INVALID。会设置GetLastError




数表



参数

类型及说明

hdc

Long,设备场景的句柄

注解



在VB里用ForeColor属性设置图片控件和窗体





Top






[Amber demo]


GetTextExtentExPoint



VB声明



Declare Function GetTextExtentExPoint Lib "gdi32" Alias "GetTextExtentExPointA" (ByVal hdc As Long, ByVal lpszStr As String, ByVal cchString As Long, ByVal nMaxExtent As Long, lpnFit As Long, alpDx As Long, lpSize As SIZE) As Long



说明



判断要填入指定区域的字符数量。也用一个数组装载每个字符的范围信息



返回值



Long,非零表示成功,零表示失败。会设置GetLastError



参数表



参数

类型及说明

hdc

Long,设备场景的句柄

lpszStr

String,准备量度其范围的字串

cchString

Long,lpszStr字串的长度

nMaxExtent

Long,采用逻辑单位表示的水平范围

lpnFit

Long,在其中保存欲填充到指定区域的字符数量。可以为NULL(用一个别名化的声明来设置ByVal As Long)——此时会忽略nMaxExtent设置

As

Long,cchString数组的第一个条目。每个条目都要保存从字串起点到这个字符的距离(采用逻辑单位)。如果不需要这方面的信息,也可设为NULL(用别名声明设置 ByVal As Long)

lpSize

SIZE,这个结构用于装载字串范围的高度和宽度信息

注解



可用这个函数计算自动换行输出时的字符位置





Top






[Amber demo]


GetTextExtentPoint, GetTextExtentPoint32



VB声明



Declare Function GetTextExtentPoint& Lib "gdi32" Alias "GetTextExtentPointA" (ByVal hdc As Long, ByVal lpszString As String, ByVal cbString As Long, lpSize As SIZE)
Declare Function GetTextExtentPoint32& Lib "gdi32" Alias "GetTextExtentPoint32A" (ByVal hdc As Long, ByVal lpsz As String, ByVal cbString As Long, lpSize As SIZE)



说明



判断一个字串的大小(范围)。在Win32环境中,最好使用GetTextExtentPoint32,它提供了更精确的计算结果



返回值



Long,非零表示成功,零表示失败。会设置GetLastError



参数表



参数

类型及说明

hdc

Long,设备场景的句柄

lpszString

String,欲度量其范围(extent)的一个字串

cbString

Long,lpszString字串的长度

lpSize

SIZE,这个结构用于装载字串范围的高度和宽度信息

注解



这个函数不会将剪切区考虑在内,但却考虑到了由SetTextCharacterExtra函数设置的任何额外空间(间距)





Top






[Amber demo]


GetTextFace



VB声明



Declare Function GetTextFace Lib "gdi32" Alias "GetTextFaceA" (ByVal hdc As Long, ByVal nCount As Long, ByVal lpFacename As String) As Long



说明



获取一种字体的字样名



返回值



Long,缓冲区中载入的字节数量。零表示失败。会

设置GetLastError



参数表



参数

类型及说明

hdc

Long,设备场景的句柄

nCount

Long,lpFacename字串的大小

lpFacename

String,指定一个字串缓冲区,用于装载当前选定字体的字样名称。这个缓冲区事先必须初始化成至少nCount+1个字符的长度

注解



类似于读取VB的FontName属性





Top






[Amber demo]


GetTextMetrics



VB声明



Declare Function GetTextMetrics Lib "gdi32" Alias "GetTextMetricsA" (ByVal hdc As Long, lpMetrics As TEXTMETRIC) As Long



说明



获取与选入一种设备场景的物理字体有关的信息



返回值



Long,非零表示成功,零表示失败。会设置GetLastError



参数表



参数

类型及说明

hdc

Long,设备场景的句柄

lpMetrics

TEXTMETRIC,用于填充物理字体属性信息的一个结构



Top






[Amber demo]


GrayString, GrayStringByString



VB声明



Declare Function GrayString& Lib "user32" Alias "GrayStringA" (ByVal hDC As Long, ByVal hBrush As Long, ByVal lpOutputFunc As Long, ByVal lpData As Long, ByVal nCount As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long)
Declare Function GrayStringByString& Lib "user32" Alias "GrayStringA" (ByVal hDC As Long, ByVal hBrush As Long, ByVal lpOutputFunc As Long, ByVal lpData As String, ByVal nCount As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As
Long, ByVal nHeight As Long)



说明



描绘一个以灰色显示的字串。通常由Windows用于标识禁止状态。这个函数使用的是当前字体,但会忽略背景及文本颜色



返回值



Long,非零表示成功。如果TextOut函数或回调控件绘图事件返回零,那么该函数也会返回零



参数表



参数

类型及说明

hDC

Long,设备场景的句柄

hBrush

Long,用于填充灰色的一个刷子。如果为零就用当前刷子

lpOutputFunc

Long,指向一个函数的指针,该函数用于输出文本。通常设为零,表示使用TextOut函数。否则可将该参数设成一个进程地址。具体地址可用一个标准函数的AddressOf运算符返回,或者用一个回调控件的相关属性返回

lpData

Long,如果是一个字串(将lpOutputFunc设为NULL),这就表示要以灰色显示的一个字串。否则就指定一个Long型变量,将其传递给回调函数

nCount

Long,欲显示的字符数量。如果设为零,而且lpData是个字串,那么就用于计算字串的长度

X,Y

Long,将字串封闭(约束)起来的一个矩形的X,Y坐标

nWidth

Long,将字串封闭起来的一个矩形的宽度,采用设备坐标表示。如设为零,就根据字串计算出具体的值

nHeight

Long,将字串封闭起来的一个矩形的高度,采用设备坐标表示。如设为零,就

根据字串计算出具体的值



Top






[Amber demo]


PolyTextOut



VB声明



Declare Function PolyTextOut Lib "gdi32" Alias "PolyTextOutA" (ByVal hdc As Long, pptxt As POLYTEXT, cStrings As Long) As Long



说明



描绘一系列字串



返回值



Long,非零表示成功,零表示失败。会设置GetLastError



参数表



参数

类型及说明

hdc

Long,欲在其中绘图的设备场景

pptxt

POLYTEXT,指定POLYTEXT结构数组中的第一个条目。该结构对要描绘字串的位置及内容进行了说明

cStrings

Long,pptxt数组中的条目数量



Top






[Amber demo]


RemoveFontResource



VB声明



Declare Function RemoveFontResource Lib "gdi32" Alias "RemoveFontResourceA" (ByVal lpFileName As String) As Long



说明



从Windows系统中删除一种字体资源。如删除的字体目前正由其他应用程序使用,则并不将其立即删除



返回值



Long,非零表示成功,零表示失败。会设置GetLastError



参数表



参数

类型及说明

lpFileName

String,一个字体资源文件的文件名

注解



删除一种字体资源后,注意必须调用一下API函数:
di% = SendMessageBynum(HWND_BROADCAST, WM_FONTCHANGE, X, Y)
其中,HWND_BROADCAST和WM_FONTCHANGE都是来自API32.TXT文件的常数。它的作用是通知所有Windows应用程序字体列表已发生了变化。
注意磁盘上的字体文件本身并不会由这个函数删除





Top






[Amber demo]


SetMapperFlags



VB声明



Declare Function SetMapperFlags Lib "gdi32" Alias "SetMapperFlags" (ByVal hdc As Long, ByVal dwFlag As Long) As Long



说明



Windows对字体进行映射时,可用该函数选择与目标设备的纵横比相符的光栅字体。请参考对GetAspectRatioFilterEx函数的解释,了解进一步的情况



返回值



Long,字体映射标志的前一个值。GDI_ERROR表示失败。会设置GetLastError



参数表



参数

类型及说明

hdc

Long,设备场景的句柄

dwFlag

Long,用ASPECT_FILTERING常数请求GDI选择与设备纵横比相符的字体



Top






[Amber demo]


SetTextAlign



VB声明



Declare Function SetTextAlign Lib "gdi32" Alias "SetTextAlign" (ByVal hdc As Long, ByVal wFlags As Long) As Long



说明



设置文本对齐方式,并指定在文本输出过程中使用设备场景的当前位置



返回值



Long,前一个文本对齐标志,GDI_ERROR表示失败。会设置GetLastError



参数表



参数

类型及说明

hdc

Long,设备场景的句柄

wFlags

Long,参考GetTextAlign函数的返回值列表

在VB里使用



针对自己修改的任何VB窗体或控件,注意确定恢复其原始的对齐排列状态。可用GetTextAlign函数了

解目前的对齐方式是什么





Top






[Amber demo]


SetTextCharacterExtra



VB声明



Declare Function SetTextCharacterExtra Lib "gdi32" Alias "SetTextCharacterExtraA" (ByVal hdc As Long, ByVal nCharExtra As Long) As Long



说明



描绘文本的时候,指定要在字符间插入的额外间距



返回值



Long,这个设备场景的前一个额外间距设置



参数表



参数

类型及说明

hdc

Long,设备场景的句柄

nCharExtra

Long,要在字符间插入的额外空间,采用设备场景的逻辑坐标系统

在VB里使用



如改变了这个设置,注意恢复VB窗体或控件原来的字符间距设置





Top






[Amber demo]


SetTextColor



VB声明



Declare Function SetTextColor Lib "gdi32" Alias "SetTextColor" (ByVal hdc As Long, ByVal crColor As Long) As Long



说明



设置当前文本颜色。这种颜色也称为“前景色”



返回值



Long,文本色的前一个RGB颜色设定。CLR_INVALID表示失败。会设置GetLastError



参数表



参数

类型及说明

hdc

Long,设备场景的句柄

crColor

Long,新的文本色

在VB里使用



如改变了这个设置,注意恢复VB窗体或控件原始的文本颜色





Top






[Amber demo]


SetTextJustification



VB声明



Declare Function SetTextJustification Lib "gdi32" Alias "SetTextJustification" (ByVal hdc As Long, ByVal nBreakExtra As Long, ByVal nBreakCount As Long) As Long



说明



通过指定一个文本行应占据的额外空间,可用这个函数对文本进行两端对齐处理



返回值



Long,非零表示成功,零表示失败。会设置GetLastError



参数表



参数

类型及说明

hdc

Long,设备场景的句柄

nBreakExtra

Long,描绘时欲添加到字串的额外空间大小

nBreakCount

Long,用于分散额外空间的分隔字符的数量

在VB里使用



如使用了这个函数,要确定针对VB窗体或控件清除错误条件



注解



额外空间由行内各个分隔字符分摊。这里的“分隔字符”是由特定的字体定义的,通常都是空格字符。可用GetTextMetrics函数了解一种字体采用的分隔字符是什么。对文本进行两端对齐排列的时候,通常需要采取的操作步骤如下:
1、用GetTextExtentPoint32这个API函数计算字串占据的显示范围
2、决定为了使一个行两端对齐,需要加入多少额外的空间(采用逻辑坐标)。这个空间(或距离)通常等于右页边距减去文本的水平“范围”
3、计算一行文本中采用多少个间隔字符(通常是空格)
4、将额外空间以及间隔字符的数量作为参数,调用SetTextJustification函数
5、调用文本绘图(显示)函数
这个函数在内部维持着

一种错误条件,用于纠正对齐过程中出现的误差。这样一来,我们就可以区分出行内不同部分间的额外间距(如行内使用了多种字体)。具体的方法是将行分割成几个段,然后为每一段都调用这个函数。对于一个新行,必须清除这个错误条件,方法是向nBreakExtra和nBreakCount参数传递零值,然后调用这个函数





Top






[Amber demo]


TabbedTextOut



VB声明



Declare Function TabbedTextOut Lib "user32" Alias "TabbedTextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long, ByVal nTabPositions As Long, lpnTabStopPositions As Long, ByVal nTabOrigin As Long) As Long



说明



支持制表站的一个文本描绘函数。也请参考SetTextAlign函数



返回值



Long,返回字串的显示“范围”。其中,结果值的高16位代表高度,低16位代表宽度



参数表



参数

类型及说明

hdc

Long,设备场景的句柄

x,y

Long,用逻辑坐标设置的一个点,指定字体的描绘(显示)起点

lpString

String,欲描绘的字串

nCount

Long,字串中要正式描绘出来的字符数

nTabPositions

Long,lpnTabStopPositions数组中的制表站数量。如果是零,lpnTabStopPositions也应该是NULL(需要另行创建一个声明,将参数指定成 ByVal nTabPositions& )——在这种情况下,制表站会根据当前字体的平均字符宽度设置成默认的8字符间距。如nTabPositions为1,那么制表站间距就会根据lpnTabStopPositions数组的第一个条目设置

lpnTabStopPositions

Long,指定制表站位置数组中的头一个条目。这些位置用设备坐标按升序指定。如果为负数,表示文本应该右对齐制表站,而不是默认的左对齐(仅适用于Win95)

nTabOrigin

Long,指定制表站起点。如为同一行多次调用该函数,而又希望维持相同的制表起点,这个参数就显得非常重要



Top






[Amber demo]


TextOut



VB声明



Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long



说明



文本绘图函数。也请参考SetTextAlign



返回值



Long,非零表示成功,零表示失败。会设置GetLastError



参数表



参数

类型及说明

hdc

Long,设备场景的句柄

x,y

Long,绘图的起点,采用逻辑坐标

lpString

String,欲描绘的字串

nCount

Long,字串中要描绘的字符数量

注解



在一个路径中,如绘图背景模式是“不透明”(opaque)——请参考SetBkMode函数,那么创建的轮廓将由字符单元格减去字符构成。如背景模式为透明,轮廓就由字符的字样本身构成





Top





相关主题
文本预览
相关文档 最新文档