明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2104|回复: 6

在vba中如何获取所有字体!

[复制链接]
发表于 2006-12-21 20:34:00 | 显示全部楼层 |阅读模式

怎样才能在窗体的复合框中显示系统和CAD中所有的字体啊??

谢谢各位!!!!

 楼主| 发表于 2006-12-25 13:10:00 | 显示全部楼层

怎么没有人回答我呢??

真是伤心啊

难道就没有一位高手愿意帮忙吗?

发表于 2006-12-25 13:40:00 | 显示全部楼层
需要得到字体所在的目录,读取所有文件名并进行判断。
 楼主| 发表于 2006-12-26 12:48:00 | 显示全部楼层

具体怎么操作啊?

如何读取字体文体啊?

 楼主| 发表于 2006-12-26 12:50:00 | 显示全部楼层

能不能给一段示例代码啊?

发表于 2006-12-26 14:11:00 | 显示全部楼层

在autocad vba 二次开发教程第五章有一个类似的例子下面是部分)

Option Explicit

' 获得SHX字体
Public Function GetShxFont(ByVal bBigFont As Boolean) As Variant
    Dim strFontFileName() As String     ' 所有字体名称的数组
    Dim strFontPath() As String     ' AutoCAD的字体文件路径
   
    ' 获得所有的支持文件路径
    strFontPath = Split(ThisDrawing.Application.Preferences.Files, ";")
   
    ' 遍历所有的支持文件路径
    Dim i As Integer
    Dim bFirst As Boolean       ' 是否是第一次查找该文件夹
    Dim strFont As String       ' 字体文件名称
    Dim strTemp As String       ' 读取到的字体文件的一行
    Dim intCount As Integer     ' 字体数组的维数
    Dim strFontFile As String   ' 字体文件的位置
    intCount = -1
    For i = 0 To UBound(strFontPath)
        bFirst = True
        ' 确保最后一个字符是"\"
        strFontPath(i) = IIf(Right(strFontPath(i), 1) = "\", strFontPath(i), strFontPath(i) & "\")
       
        Do
            If bFirst Then
                strFont = Dir(strFontPath(i) & "*.shx")
                bFirst = False
            Else
                strFont = Dir
            End If
           
            If Len(strFont) <> 0 Then
                ' 打开字体文件
                strFontFile = strFontPath(i) & strFont
                Open strFontFile For Input As #1
                Line Input #1, strTemp
                Close #1
               
                ' 判断字体的类型
                If bBigFont Then
                    If Mid(strTemp, 12, 7) = "bigfont" Then
                        intCount = intCount + 1
                        ReDim Preserve strFontFileName(intCount)
                        strFontFileName(intCount) = strFont
                    End If
                Else
                    If Mid(strTemp, 12, 7) = "unifont" Or Mid(strTemp, 12, 6) = "shapes" Then
                        intCount = intCount + 1
                        ReDim Preserve strFontFileName(intCount)
                        strFontFileName(intCount) = strFont
                    End If
                End If
            Else
                Exit Do
            End If
        Loop
    Next i
   
    GetShxFont = strFontFileName
End Function

 楼主| 发表于 2006-12-27 22:49:00 | 显示全部楼层

多谢楼上的大侠!!!

不过有个新的问题

我获取了字体文件之后只能得到字体文件的名称,而无法得到字体的名称

请大侠再指点迷津

感激不尽

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 21:32 , Processed in 0.176984 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表