Domanda

Sto facendo un programma in Win32 C usando Visual Studio RC e non riesco a capire come eseguire questo compito apparentemente semplice.Ho un controllo del testo statico, un controllo di modifica e un pulsante.Quando l'utente fa clic sul pulsante, non sono il programma per prendere il testo nel controllo di modifica e aggiungerlo a qualunque sia la casella di testo statica.Dopo molto mal di testa e vari tentativi, non riesco ancora a far funzionare questo.Posso recuperare il testo dal controllo di controllo Modifica, ma qualsiasi tentativo di aggiungerlo agli arresti anomali di controllo statico.Bene, in realtà solo per chiarire, posso impostare il testo bene;Sta solo aggiungendo al testo esistente che si blocca del programma.Qualcuno potrebbe pubblicare qualche codice che mi consentirebbe di farlo usando GetWindowText () e SetWindowText (), (o qualcos'altro se preferibile).Ecco cosa ho:

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

Qualsiasi aiuto molto apprezzato!Grazie!

È stato utile?

Soluzione

Hai solo prenotato un char per i buffer delle stringhe.Quindi, invece di

static TCHAR*       editbuffer = new TCHAR;
static TCHAR*       allText    = new TCHAR;
.

Devi prenotare molto più memoria, ad esempio.:

static TCHAR*       editbuffer = new TCHAR[255];
static TCHAR*       allText    = new TCHAR[255];
.

che ti darebbe tamponi a stringhe che possono contenere 254 caratteri e il charb null terminale

Comunque consiglierei di prenotare semplicemente la memoria sullo stack all'interno della tua funzione:

void OnButtonClick()
{
    TCHAR editbuffer[255] = {0};
    TCHAR allText[255] = {0};
    ...
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top