Cómo agregar texto al texto existente en el control estático en Win32
Pregunta
Estoy haciendo un programa en Win32 C usando Visual Studio RC y no puedo averiguar cómo hacer esta tarea aparentemente simple.Tengo un control de texto estático, un control de edición y un botón.Cuando el usuario hace clic en el botón, no hago el programa para tomar el texto en el control de edición y agregarlo a lo que esté en el cuadro de texto estático.Después de mucho dolor de cabeza y varios intentos, todavía no puedo hacer que esto funcione.Puedo recuperar el texto de la multa de control de edición, pero cualquier intento de agregarlo a los bloqueos de control estático.Bien en realidad solo para aclarar, puedo establecer el texto bien;Es solo agregar al texto existente que bloquea el programa.Podría alguien, por favor, publique algún código que me permita hacer esto utilizando GetWindowText () y SetWindowText (), (o algo más si es preferible).Aquí está lo que tengo:
SendMessage(hwndEditControl, WM_GETTEXT,255,(LPARAM)editbuffer);
GetWindowText(hwndTextControl, (LPWSTR)allText, GetWindowTextLength(hwndTextControl));
//function to add data, please create on
SetWindowText(hwndTextControl, (LPCWSTR)allText);}
//where
static TCHAR* editbuffer = new TCHAR; //feel free to change these declarations
static TCHAR* allText = new TCHAR;
¡Cualquier ayuda apreciada mucho!¡Gracias!
Solución
Solo estás reservando un char para tus buffers de cadena.Así que en lugar de
static TCHAR* editbuffer = new TCHAR;
static TCHAR* allText = new TCHAR;
Tienes que reservar mucho más memoria, por ejemplo:
static TCHAR* editbuffer = new TCHAR[255];
static TCHAR* allText = new TCHAR[255];
que le daría buffers de cadena que pueden contener 254 caracteres y la terminación Null Char.
Sin embargo, le recomendaría que simplemente reserve la memoria en la pila dentro de su función:
void OnButtonClick()
{
TCHAR editbuffer[255] = {0};
TCHAR allText[255] = {0};
...
}