Private Sub txtsend_Change()
On Error Resume Next
udppeera.SendData txtsend.Font & txtsend.Text
End SubPrivate Sub udppeerb_DataArrival(ByVal bytesTotal As Long)
Dim strdata As Stringudppeerb.GetData strdata, vbString
txtoutput.Text = strdata
txtoutput.Font = Left(txtoutput.Text, 4)
txtoutput.Text = Replace(txtoutput.Text, Left(txtoutput.Text, 4), "")
End Sub
 请问一下,如何实现发送方发送的是什么字体,接收方接到的文本就是什么字体,就像QQ一样
字体大小颜色都一致
谢谢各位!

解决方案 »

  1.   

    一、定义一个用户数据类型来描述字体和文本,比如:
    Private Type FONT_INFO_TYPE
        Color As Long '文字颜色
        Name As String * 32 '字体名称
        Size As Long '字体大小
        Bold As Boolean '是否粗体
        Italic As Boolean '是否斜体
        Underline As Boolean '是否有下划线
        Length As Long '文字实际长度
        Text As String * 256 '文字内容缓冲区
    End Type
    二、发送时,填充类型为FONT_INFO_TYPE的变量的各个成员。
    三、接收时,按字节数组方式进行接收,然后使用CopyMemory复制到FONT_INFO_TYPE类型的变量,再根据FONT_INFO_TYPE的成员进行拆分即可,比如:
    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
        Dim bytsBuffer() As Byte
        Dim FontInfo As FONT_INFO_TYPE
        
        Me.Winsock1.GetData bytsBuffer, vbByte Or vbArray
        CopyMemory FontInfo, bytesbuffer(0), bytesTotal
    End Sub
    最后,在显示前,要用Replace(FontInfo.Name, vbNullChar, "")获得字体名称,Left(FontInfo.Text, FontInfo.Length)获得实际的文本内容。