精华区 [关闭][返回]

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

主题:VB API:文本和字体函数 第一页
发信人: winsy(鹰派)
整理人: winsy(2003-03-14 09:04:26), 站内信件
AddFontResource 

VB声明 
Declare Function AddFontResource Lib "gdi32" Alias "AddFontResourceA" (ByVal lpFileName As String) As Long 
说明 
在Windows系统中添加一种字体资源。添加完毕后,该字体即可由任何Windows应用程序调用 
返回值 
Long,添加的字体数量,零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
lpFileName String,字体资源文件的文件名。可以是.FON, .FNT, .TTF 或 .FOT文件 
注解 
添加了一种资源后必须调用下述API函数:
di% = SendMessageBynum(HWND_BROADCAST, WM_FONTCHANGE, x, y)
其中,HWND_BROADCAST、WM_FONTCHANGE使用来自API32.TXT文件的值。这样便可告诉所有Windows应用程序字体列表已发生了变化
 
示例 
Call AddFontResource("myfont.ttf")
Call SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0) 


CreateFont 

VB声明 
Declare Function CreateFont Lib "gdi32" Alias "CreateFontA" (ByVal H As Long, ByVal W As Long, ByVal E As Long, ByVal O As Long, ByVal W As Long, ByVal I As Long, ByVal u As Long, ByVal S As Long, ByVal C As Long, ByVal OP As Long, ByVal CP As Long, ByVal Q As Long, ByVal PAF As Long, ByVal F As String) As Long 
说明 
用指定的属性创建一种逻辑字体 
返回值 
Long,执行成功则返回逻辑字体的句柄,零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
H Long,IfHeight 
W Long,IfWidth 
E Long,IfEscapement 
O Long,IfOrientation 
W Long,IfWeight 
I Long,IfItalic 
u Long,IfUnderline 
S Long,IfStrikeOut 
C Long,IfCharSet 
OP Long,IfOutputPrecision 
CP Long,IfClipPrecision 
Q Long,IfQuality 
PAF Long,IfPitchAndFamily 
F String,IfFaceName 
注解 
VB的字体属性在选择字体的时候显得更有效 


CreateFontIndirect 

VB声明 
Declare Function CreateFontIndirect Lib "gdi32" Alias "CreateFontIndirectA" (lpLogFont As LOGFONT) As Long 
说明 
用指定的属性创建一种逻辑字体 
返回值 
Long,执行成功则返回逻辑字体句柄,零表示失败 
参数表 
参数 类型及说明 
lpLogFont LOGFONT,这个结构定义了逻辑字体请求的属性 
注解 
VB的字体属性在选择字体的时候显得更有效
 

CreateScalableFontResource 

VB声明 
Declare Function CreateScalableFontResource Lib "gdi32" Alias "CreateScalableFontResourceA" (ByVal fHidden As Long, ByVal lpszResourceFile As String, ByVal lpszFontFile As String, ByVal lpszCurrentPath As String) As Long 
说明 
为一种TureType字体创建一个资源文件,以便能用API函数AddFontResource将其加入Windows系统。字体信息本身并不复制到字体资源文件中;相反,资源文件中包含了欲使用的TureType文件的名字 
返回值 
Long,非零表示成功,零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
fHidden Long,如果是零,表示创建一个普通的字体资源;如果是1,表示创建一个只读字体资源,它只能在文档中嵌入使用 
lpszResourceFile String,欲创建的资源文件的名字。普通文件使用.FOT扩展名,只读文件使用.FOR扩展名 
lpszFontFile String,TureType字体文件文件的文件名。如果其中包含了一个路径,就到指定的路径寻找字体文件,同时不使用lpszCurrentPath参数指定的位置。而且在调用AddFontResource函数之前,会将字体复制到Windows的SYSTEM目录 
lpszCurrentPath String,由lpszFontFile参数决定 


DrawText 

VB声明 
Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long 
说明 
将文本描绘到指定的矩形中 
返回值 
Long,描绘文字的高度 
参数表 
参数 类型及说明 
hdc Long,欲在其中显示文字的一个设备场景的句柄 
lpStr String,欲描绘的文本字串 
nCount Long,欲描绘的字符数量。如果要描绘整个字串(直到空中止符),则可将这个参数设为-1 
lpRect RECT,指定用于绘图的一个格式化矩形(采用逻辑坐标) 
wFormat Long,一个标志位数组,决定了以何种形式执行绘图。参考下面总结的常数类型列表 
标志常数 说明 
DT_BOTTOM 必须同时指定DT_SINGLE。指示文本对齐格式化矩形的底边 
DT_CALCRECT 象下面这样计算格式化矩形:多行绘图时矩形的底边根据需要进行延展,以便容下所有文字;单行绘图时,延展矩形的右侧。不描绘文字。由lpRect参数指定的矩形会载入计算出来的值 
DT_CENTER 文本垂直居中 
DT_EXPANDTABS 描绘文字的时候,对制表站进行扩展。默认的制表站间距是8个字符。但是,可用DT_TABSTOP标志改变这项设定 
DT_EXTERNALLEADING 计算文本行高度的时候,使用当前字体的外部间距属性(the external leading attribute) 
DT_LEFT 文本左对齐 
DT_NOCLIP 描绘文字时不剪切到指定的矩形 
DT_NOPREFIX 通常,函数认为 & 字符表示应为下一个字符加上下划线。该标志禁止这种行为 
DT_RIGHT 文本右对齐 
DT_SINGLELINE 只画单行 
DT_TABSTOP 指定新的制表站间距,采用这个整数的高8位 
DT_TOP 必须同时指定DT_SINGLE。指示文本对齐格式化矩形的顶部 
DT_VCENTER 必须同时指定DT_SINGLE。指示文本对齐格式化矩形的中部 
DT_WORDBREAK 进行自动换行。如用SetTextAlign函数设置了TA_UPDATECP标志,这里的设置则无效 


DrawTextEx 

VB声明 
Declare Function DrawTextEx Lib "user32" Alias "DrawTextExA" (ByVal hDC As Long, ByVal lpsz As String, ByVal n As Long, lpRect As RECT, ByVal un As Long, lpDrawTextParams As DRAWTEXTPARAMS) As Long 
说明 
与DrawText相似,只是加入了更多的功能 
返回值 
Long,描绘文字的高度 
参数表 
参数 类型及说明 
hDC Long,要在其中绘图的一个设备场景的句柄 
lpsz String,欲描绘的文本字串 
n Long,欲描绘的字符数量。如果要描绘整个字串(直到空中止符),则可将这个参数设为-1 
lpRect RECT,指定用于绘图的一个格式化矩形(采用逻辑坐标) 
un Long,一个标志位。决定了以何种形式执行绘图。参考DrawText的wFormat参数和下表。其中下表列出的是新增的常数 
标志常数 说明 
DT_EDITCONTROL 对一个多行编辑控件进行模拟。不显示部分可见的行 
DT_ENDELLIPSES 倘若字串不能在矩形里全部容下,就在末尾显示省略号 
DT_PATHELLIPSES 如字串包含了 \ 字符,就用省略号替换字串内容,使其能在矩形中全部容下。例如,一个很长的路径名可能换成这样显示——c:\windows\...\doc\readme.txt 
DT_MODIFYSTRING 如指定了DT_ENDELLIPSES 或 DT_PATHELLIPSES,就会对字串进行修改,使其与实际显示的字串相符 
DT_RTLREADING 如选入设备场景的字体属于希伯来或阿拉伯语系,就从右到左描绘文字 
lpDrawTextParams DRAWTEXTPARAMS,这个结构包含了附加的绘图参数 


EnumFontFamilies 

VB声明 
Declare Function EnumFontFamilies Lib "gdi32" Alias "EnumFontFamiliesA" (ByVal hdc As Long, ByVal lpszFamily As String, ByVal lpEnumFontFamProc As Long, ByVal lParam As Long) As Long 
说明 
列举指定设备可用的字体 
返回值 
Long,由回调函数返回的前一个值 
参数表 
参数 类型及说明 
hdc Long,设备场景的句柄 
lpszFamily String,欲枚举的字体家族。如指定 vbNullString,可枚举出每种可用字体家族中的一种字体 
lpEnumFontFamProc Long,欲调用的函数地址。这个地址是用 AddressOf 运算符为来自一个标准模块的函数进行操作,或者利用某个回调控件得到 
lParam Long,指定希望传递给回调函数的一个用户自定义值 
注解 
这个函数取代了API函数 EnumFonts,因为它能对TureType字体样式说明进行控制
只有实际存在的字体才会列举出来,那些可由GDI合成的字体不会列出
 

EnumFontFamiliesEx 

VB声明 
Declare Function EnumFontFamiliesEx Lib "gdi32" Alias "EnumFontFamiliesExA" (ByVal hdc As Long, lpLogFont As LOGFONT, ByVal lpEnumFontProc As Long, ByVal lParam As Long, ByVal dw As Long) As Long 
说明 
根据一个LOGFONT结构提供的信息,列举指定设备可用的字体 
返回值 
Long,由回调函数返回的前一个值 
参数表 
参数 类型及说明 
hdc Long,设备场景的句柄 
lpLogFont LOGFONT,这个结构指定了欲枚举的字体。此时用到的字段包括:lfCharSet, lfFaceName 和 lfPitchAndFamily。其他所有字段都会忽略 
lpEnumFontFamProc Long,欲调用的函数地址。这个地址是用 AddressOf 运算符为来自一个标准模块的函数进行操作,或者利用某个回调控件得到 
lParam Long,指定希望传递给回调函数的一个用户自定义值 
dw Long,保留,设为零 
注解 
参见EnumFontFamilies函数的注解
 

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函数,那里有更详细的解释
 

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值数组的指针。该数组对每一对字符的间距进行了说明(采用逻辑单位)。其中第一个条目是第一和第二个字符的间距;第二个条目是第二和第三个字符的间距;以此类推。如果为零,函数就使用字体的默认间距设置 


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,用于装载纵横比的一个结构 


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函数
 

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 


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


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可获得更详细的信息
 

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 


[关闭][返回]