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!

¿Fue útil?

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};
    ...
}

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top