怎么将文字与图片全部读到Rich TextBox控件中
如何将文字与图片全部读到Rich TextBox控件中?
在网上搜了很多方法,发现都不能实现。
我要向Rich TextBox控件中添加一些文字,然后添加一幅图片(JPG格式),然后在图片后继续添加文字。试了网上提供的N多种方法,都不行,希望高手支招。
------解决方案--------------------
在网上搜了很多方法,发现都不能实现。
我要向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)