怎么将文字与图片全部读到Rich TextBox控件中

如何将文字与图片全部读到Rich TextBox控件中?
在网上搜了很多方法,发现都不能实现。

我要向Rich TextBox控件中添加一些文字,然后添加一幅图片(JPG格式),然后在图片后继续添加文字。试了网上提供的N多种方法,都不行,希望高手支招。

------解决方案--------------------
VB code

Private Sub Command1_Click()
    '==================== 变量定义 ====================
    Dim objTemp As IPictureDisp
    Dim strTemp As String
    Dim lngClipboardType As Long
    '==================== 变量初始化 ====================
    lngClipboardType = -1
    '==================== 保存剪切板数据 ====================
    If Clipboard.GetFormat(vbCFBitmap) = True Then
        Set objTemp = Clipboard.GetData(vbCFBitmap)
        lngClipboardType = 0
    ElseIf Clipboard.GetFormat(vbCFText) = True Then
        strTemp = Clipboard.GetText(vbCFText)
        lngClipboardType = 1
    ElseIf Clipboard.GetFormat(vbCFMetafile) = True Then
        Set objTemp = Clipboard.GetData(vbCFMetafile)
        lngClipboardType = 2
    ElseIf Clipboard.GetFormat(vbCFDIB) = True Then
        Set objTemp = Clipboard.GetData(vbCFDIB)
        lngClipboardType = 3
    End If
    
    Clipboard.Clear                                 '清空剪切板
    Clipboard.SetData Picture1.Picture, vbCFBitmap  '将要插入的图片放入剪切板
    RichTextBox1.SetFocus                           '将焦点放到 RichTextBox1 上
    SendKeys "^V", True                             '模拟粘贴按键操作
    Clipboard.Clear                                 '清空剪切板
    '==================== 还原剪切板数据 ====================
    Select Case lngClipboardType
    Case 0: Clipboard.SetData objTemp, vbCFBitmap
    Case 1: Clipboard.SetText strTemp, vbCFText
    Case 2: Clipboard.SetData objTemp, vbCFMetafile
    Case 3: Clipboard.SetData objTemp, vbCFDIB
    End Select
End Sub

------解决方案--------------------
不需要剪切板,直接使用SendKey发送字符串到富文本框的光标位置即可,比如:
VB code

Private Sub Command1_Click()
    Me.RichTextBox1.SelStart = Len(Me.RichTextBox1.Text)
    Me.RichTextBox1.SetFocus
    SendKeys "软件设计"
End Sub

------解决方案--------------------
在Richtextbox上输入文字后 Call CopyPast

光标会紧贴在图片后面, 你完全可以在图片后面紧接着输入,注意下图那个小箭头图片的右边光标

Private Type repastespecial
dwAspect As Long
dwParam As Long
End Type
'Const WM_CUT = &H300
'Const WM_COPY = &H301
'Const WM_PAST = &H302
'Const WM_CLEAR = &H303
'Const WM_UNDO = &H304
'Const WM_USER = &H400
'Const EM_PASTESPECIAL = WM_USER + 64
'Const CF_BITMAP = 2
'Const CF_TEXT = 1
'Const DVASPECT_CONTENT = 1
'Const DVASPECT_ICON = 4

Sub CopyPast()
On Error Resume Next
Dim Rep As repastespecial
Dim ClipBoardFormat&
'复制图片
PicName = "c:\test.gif"
Picture1.Picture = LoadPicture(PicName)
Clipboard.Clear
Clipboard.SetData Picture3.Image
'粘贴图片
Rep.dwAspect = DVASPECT_CONTENT
If Clipboard.GetFormat(vbCFText) Then '剪贴板中为文本信息
ClipBoardFormat = "vbCFText"
ElseIf Clipboard.GetFormat(vbCFBitmap) Then '剪贴板中为位图信息
ClipBoardFormat = "vbCFBitmap"
ElseIf Clipboard.GetFormat(vbCFRTF) Then
ClipBoardFormat = "vbCFRTF"
ElseIf Clipboard.GetFormat(vbCFLink) Then
ClipBoardFormat = "vbCFLink"
ElseIf Clipboard.GetFormat(vbCFMetafile) Then
ClipBoardFormat = "vbCFMetafile"
ElseIf Clipboard.GetFormat(vbCFDIB) Then
ClipBoardFormat = "vbCFDIB"
ElseIf Clipboard.GetFormat(vbCFPalette) Then
ClipBoardFormat = "vbCFPalette"
ElseIf Clipboard.GetFormat(vbCFEMetafile) Then
ClipBoardFormat = "vbCFEMetaFile"
ElseIf Clipboard.GetFormat(vbCFFiles) Then
ClipBoardFormat = "vbCFFiles"
Else
ClipBoardFormat = "Empty"
End If
Call SendMessage(RichTextBox1.hWnd, EM_PASTESPECIAL, ClipBoardFormat, Rep)