如何在RichBOX中设置字符的间距(紧急任务)

解决方案 »

  1.   

    Private Declare Function SetTextCharacterExtra Lib "gdi32" (ByVal hdc As Long, ByVal nCharExtra As Long) As LongPrivate Sub Form_Paint()
        SetTextCharacterExtra Me.hdc, 10
        Me.Print "this is test"
    End SubSetTextCharacterExtra 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窗体或控件原来的字符间距设置
     
      

  2.   

    在richtextbox中可能不能这么设置.你可以试试.
      

  3.   

    对于FORM是可以用SetTextCharacterExtra 但是RichBox不行
      

  4.   

    我试了下,用的是TextBox,用TextOut+SetTextCharacterExtra 可以扩大字距,但是没有多大作用~~~~不能自己换行,在字中无法插入光标,等等 ~~~~~~~~~
      

  5.   

    好象不用API  有一个隐藏属性具体你看看MSDN
       我以前用过
      

  6.   

    恢复: michael_zy
    能不能把你的例程,张贴上来
      

  7.   

    可以,这是我写的例子,但是有很多问题~~只能实现扩大字据Private Declare Function SetTextCharacterExtra Lib "gdi32" (ByVal hdc As Long, ByVal nCharExtra As Long) As Long
    Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Private 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
    Private Declare Function GetCaretPos Lib "user32" (lpPoint As POINTAPI) As LongPrivate Type POINTAPI
            x As Long
            y As Long
    End Type   Dim hdc As Long
        Dim caretPos As POINTAPI
        
        Text1.Refresh
        hdc = GetDC(Text1.hwnd)
        'GetCaretPos caretPos
        SetTextCharacterExtra hdc, 30&
        TextOut hdc, 0, 0, Text1.SelText, Len(Text1.SelText)
    End SubPrivate Sub Text1_Change()
        Dim hdc As Long
        Dim caretPos As POINTAPI
        
        'Text1.Refresh
        hdc = GetDC(Text1.hwnd)
        'GetCaretPos caretPos
        SetTextCharacterExtra hdc, 30&
        TextOut hdc, 0, 0, Text1.Text, Len(Text1.Text)
    End Sub
      

  8.   

    晕,少贴了一句话。
    Private Sub Command2_Click()
        Dim hdc As Long
        Dim caretPos As POINTAPI
        
        Text1.Refresh
        hdc = GetDC(Text1.hwnd)
        'GetCaretPos caretPos
        SetTextCharacterExtra hdc, 30&
        TextOut hdc, 0, 0, Text1.SelText, Len(Text1.SelText)
    End Sub