首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

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

2012-11-07 
如何将文字与图片全部读到Rich TextBox控件中?在网上搜了很多方法,发现都不能实现。我要向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 SelectEnd 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)


RichTextBox1.SetFocus '让光标紧跟在图片的后面
End Sub



[解决办法]
那是因为你添加图片后。图片是选中状态,再粘贴文字就把图片替换掉了。
你得移一下光标到最后,就可以粘贴文字进去了。

热点排行