Para usar emoticones (o emojis) en un control RichEdit (como el que se usa en aplicaciones de Windows con lenguajes como C++, Delphi, o C#), necesitas considerar que este control soporta texto enriquecido (RTF) y, en versiones más modernas, puede manejar caracteres Unicode, que es donde se codifican los emojis. Aquí te explico cómo hacerlo de forma general, asumiendo que estás programando en un entorno como Windows:
Pasos básicos:
Asegúrate de que el control soporte Unicode:
El control RichEdit debe ser de una versión compatible (como RichEdit 3.0 o superior), ya que las versiones antiguas no manejan bien los caracteres Unicode necesarios para los emojis.
En Windows, esto suele implicar usar la clase RICHEDIT50W (en lugar de la antigua RICHEDIT).
Inserta los emojis como texto Unicode:
Los emojis son caracteres Unicode, representados por códigos específicos (por ejemplo, el emoji "

" es U+1F60A).
Puedes insertarlos directamente como texto en el control, ya sea escribiendo el carácter (si tu teclado lo permite) o usando su código Unicode en el código fuente.
Ejemplo en diferentes lenguajes:
C++ (WinAPI):
cpp
HWND richEdit = CreateWindowEx(0, MSFTEDIT_CLASS, L"",
ES_MULTILINE | WS_VISIBLE | WS_CHILD | WS_BORDER,
0, 0, 200, 100, hwndParent, NULL, hInstance, NULL);
SendMessage(richEdit, EM_SETTEXTMODE, TM_PLAINTEXT | TM_RICHEDIT, 0);
SetWindowText(richEdit, L"¡Hola!


"); // Emoji como texto Unicode
Aquí, L"


" usa la codificación UTF-16 (wide characters) que Windows soporta nativamente.
Delphi:
delphi
RichEdit1.Text := '¡Hola!


';
Solo asegúrate de que el proyecto esté configurado para Unicode (lo cual es predeterminado en versiones modernas de Delphi).
C# (Windows Forms):
csharp
richTextBox1.Text = "¡Hola!


";
En .NET, el control RichTextBox soporta Unicode de forma nativa, así que simplemente asigna el texto con emojis.
Usar códigos Unicode explícitos (si no puedes escribir el emoji directamente):
Si estás generando el texto dinámicamente o no puedes escribir emojis directamente en el código, usa sus valores Unicode. Por ejemplo:
En C++: L"\uD83D\uDE0A" (para "

").
En C#: "Hola " + char.ConvertFromUtf32(0x1F60A) + " mundo".
Consideraciones adicionales:
Fuente: Asegúrate de que la fuente usada en el RichEdit soporte emojis (como Segoe UI Emoji en Windows). Puedes configurarla con SendMessage(richEdit, WM_SETFONT, ...) en WinAPI o la propiedad Font en entornos como .NET o Delphi.
Codificación: Si copias y pegas emojis desde una fuente externa, verifica que el archivo fuente del programa esté guardado en UTF-8 o UTF-16 para evitar problemas de codificación.
Soporte del sistema operativo: Los emojis se renderizan bien en Windows 10 y 11. En versiones más antiguas (como Windows 7), puede que necesites instalar fuentes adicionales o que no se muestren correctamente.
Ejemplo práctico (C#):
csharp
richTextBox1.Font = new Font("Segoe UI Emoji", 12);
richTextBox1.Text = "¡Probando emojis!



";