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)