Insertar imagen en un RichTextBox Fecha: 04/Abr/2004 (28/03/04)
|
. |
A veces es necesario aprovechar todos los recursos que nos brinda el control RichTextBox. Si estamos creando un procesador de textos con este control, nos ser�a interesante hacer que nuestros programas tengan muchas posibilidades (formato, color, vi�etas, etc) pero entre una de ellas est� la de poder insertar im�genes dentro del documento. Para ello vamos a usar el Portapapeles y una llamada a la API SendMessage para lograr poner la imagen dentro del RichTextBox. El proyecto tambi�n tiene el control CommonDialog para abrir la imagen.
A continuaci�n sigue c�digo en Visual Basic:
Option Explicit Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long Private Const WM_PASTE = &H302 Private Sub cmdInsertarImagen_Click() On Error GoTo ErrorImagen Dim strRutaImagen As String Dim imgLaImagen As Picture Dim strContenidoPortapapeles As String With cdlImagen .DialogTitle = "Insertar imagen" .CancelError = True .Filter = "Todos los archivos de im�genes|*.gif;*.jpg;*.jpe;*.bmp;*.png|Im�genes GIF (*.gif)|*.gif|Im�genes JPG (*.jpg, *.jpe)|*.jpg;*.jpe|Im�genes de mapas de bits (*.bmp)|*.bmp|Im�genes PNG (*.png)|*.png|Todos los archivos (*.*)|*.*" .FilterIndex = 1 .Flags = cdlOFNFileMustExist Or cdlOFNHideReadOnly .ShowOpen strRutaImagen = .FileName End With Set imgLaImagen = LoadPicture(strRutaImagen) strContenidoPortapapeles = Clipboard.GetText Clipboard.Clear Clipboard.SetData imgLaImagen SendMessage rtfTexto.hWnd, WM_PASTE, 0, 0 Clipboard.Clear Clipboard.SetText strContenidoPortapapeles Exit Sub ErrorImagen: If Err.Number <> 32755 Then MsgBox "Error " & Err.Number & " " & Err.Description Exit Sub End If End SubLa imagen queda insertada en el RichTextBox como si de un objeto se tratase. Se puede cambiar de tama�o, mover, y el texto va acompa�ado de la imagen.
Espero que les guste a todos!!!
Fichero con el c�digo de ejemplo (galegre_ImagenRTF.zip - 2.36 KB)