VB中用API实现字体公用对话框例子

Private Const LF_FACESIZE = 32
Private Const CF_PRINTERFONTS = &H2
Private Const CF_SCREENFONTS = &H1
Private Const CF_BOTH = (CF_SCREENFONTS Or CF_PRINTERFONTS)
Private Const CF_EFFECTS = &H100&
Private Const CF_FORCEFONTEXIST = &H10000
Private Const CF_INITTOLOGFONTSTRUCT = &H40&
Private Const CF_LIMITSIZE = &H2000&
Private Const REGULAR_FONTTYPE = &H400

'charset Constants

Private Const ANSI_CHARSET = 0
Private Const ARABIC_CHARSET = 178
Private Const BALTIC_CHARSET = 186
Private Const CHINESEBIG5_CHARSET = 136
Private Const DEFAULT_CHARSET = 1
Private Const EASTEUROPE_CHARSET = 238
Private Const GB2312_CHARSET = 134
Private Const GREEK_CHARSET = 161
Private Const HANGEUL_CHARSET = 129
Private Const HEBREW_CHARSET = 177
Private Const JOHAB_CHARSET = 130
Private Const MAC_CHARSET = 77
Private Const OEM_CHARSET = 255
Private Const RUSSIAN_CHARSET = 204
Private Const SHIFTJIS_CHARSET = 128
Private Const SYMBOL_CHARSET = 2
Private Const THAI_CHARSET = 222
Private Const TURKISH_CHARSET = 162

Private Type LOGFONT


        lfHeight As Long
        lfWidth As Long
        lfEscapement As Long
        lfOrientation As Long
        lfWeight As Long
        lfItalic As Byte
        lfUnderline As Byte
        lfStrikeOut As Byte
        lfCharSet As Byte
        lfOutPrecision As Byte
        lfClipPrecision As Byte
        lfQuality As Byte
        lfPitchAndFamily As Byte
        lfFaceName As String * 31
End Type
Private Type CHOOSEFONT
        lStructSize As Long
        hwndOwner As Long          '  caller's window handle
        hDC As Long                '  printer DC/IC or NULL
        lpLogFont As Long          '  ptr. to a LOGFONT struct
        iPointSize As Long         '  10 * size in points of selected font
        flags As Long              '  enum. type flags
        rgbColors As Long          '  returned text color
        lCustData As Long          '  data passed to hook fn.
        lpfnHook As Long           '  ptr. to hook function
        lpTemplateName As String     '  custom template name
        hInstance As Long          '  instance handle of.EXE that
                                       '    contains cust. dlg. template
        lpszStyle As String          '  return the style field here
                                       '  must be LF_FACESIZE or bigger
        nFontType As Integer          '  same value reported to the EnumFonts
                                       '    call back with the extra FONTTYPE_
                                       '    bits added
        MISSING_ALIGNMENT As Integer
        nSizeMin As Long           '  minimum pt size allowed &
        nSizeMax As Long           '  max pt size allowed if
                                       '    CF_LIMITSIZE is used
End Type

Private Declare Function CHOOSEFONT Lib "comdlg32.dll" Alias "ChooseFontA" _
                                  (ByRef pChoosefont As CHOOSEFONT) As Long
Private Sub Command1_Click()
    Dim cf As CHOOSEFONT, lfont As LOGFONT
    Dim fontname As String, ret As Long
    cf.flags = CF_BOTH Or CF_EFFECTS Or CF_FORCEFONTEXIST Or CF_INITTOLOGFONTSTRUCT Or CF_LIMITSIZE
    cf.lpLogFont = VarPtr(lfont)
    cf.lStructSize = LenB(cf)
    'cf.lStructSize = Len(cf)  ' size of structure
    cf.hwndOwner = Form1.hWnd  ' window Form1 is opening this dialog box
    cf.hDC = Printer.hDC  ' device context of default printer (using VB's mechanism)
    cf.rgbColors = RGB(0, 0, 0)  ' black
    cf.nFontType = REGULAR_FONTTYPE  ' regular font type i.e. not bold or anything
    cf.nSizeMin = 10  ' minimum point size
    cf.nSizeMax = 72  ' maximum point size
    ret = CHOOSEFONT(cf) 'brings up the font dialog
    If ret <> 0 Then  ' success
        fontname = StrConv(lfont.lfFaceName, vbUnicode, &H804) 'Retrieve chinese font name in english version os
        fontname = Left$(fontname, InStr(1, fontname, vbNullChar) - 1)
        'Assign the font properties to text1
        With Text1.Font
             .Charset = lfont.lfCharSet 'assign charset to font
             .Name = fontname
             .Size = cf.iPointSize / 10 'assign point size
             Text1.Text = .Name & ":" & .Charset & ":" & .Size 'display data in chosen Font
        End With
    End If
End Sub


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现字体格式化和编辑功能,可以使用VB中的RichTextBox控件。以下是添加通用对话框和RichTextBox控件的步骤: 1. 在VB中创建一个新窗体。 2. 从工具箱中拖动一个OpenFileDialog控件和一个RichTextBox控件到窗体上。 3. 在窗体上添加一个菜单栏。在菜单栏上添加“打开”和“保存”选项。 4. 双击“打开”菜单项,在代码编辑器中添加以下代码: ``` Private Sub 打开ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 打开ToolStripMenuItem.Click '打开文件对话框 OpenFileDialog1.Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*" If OpenFileDialog1.ShowDialog() = DialogResult.OK Then '将文件内容读入RichTextBox控件 RichTextBox1.LoadFile(OpenFileDialog1.FileName, RichTextBoxStreamType.PlainText) End If End Sub ``` 5. 双击“保存”菜单项,在代码编辑器中添加以下代码: ``` Private Sub 保存ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 保存ToolStripMenuItem.Click '保存文件对话框 SaveFileDialog1.Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*" If SaveFileDialog1.ShowDialog() = DialogResult.OK Then '将RichTextBox控件中的内容保存到文件 RichTextBox1.SaveFile(SaveFileDialog1.FileName, RichTextBoxStreamType.PlainText) End If End Sub ``` 6. 现在,您可以在RichTextBox控件中编辑文本,并使用工具栏上的按钮对文本进行格式化,例如加粗、斜体、下划线等。您还可以使用右键单击菜单来选择字体、字号、颜色等。 希望这可以帮助您实现所需的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值