Как добавить текст на существующий текст в статическом управлении в Win32
Вопрос
Я делаю программу в Win32 C, используя Visual Studio RC, и я не могу понять, как сделать эту кажущуюся простую задачу.У меня есть статический текстовый элемент управления, управление редактированием и кнопка.Когда пользователь нажимает кнопку, я не буду программа, чтобы принять текст в управлении редактированием и добавить его к тому, что находится в статическом текстовом поле.После долгих головных болей и разных попыток я до сих пор не могу заставить это работать.Я могу извлечь текст из элемента управления редактированием, но любую попытку добавить его в аварию на статическом управлении.Ну на самом деле просто чтобы уточнить, я могу установить текст штраф;Он просто добавляет к существующему тексту, который сбивает программу.Может ли кто-нибудь, пожалуйста, опубликовать какой-нибудь код, который позволит мне сделать это, используя getwindowtext () и setwindowtext (), (или что-то еще, если он предпочтительнее).Вот что у меня есть:
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;
.
Любая помощь очень ценится!Спасибо!
Решение
Вы забронируете только один символ для ваших строковых буферов.Так вместо
static TCHAR* editbuffer = new TCHAR;
static TCHAR* allText = new TCHAR;
.
Вы должны забронировать гораздо больше памяти, например.:
static TCHAR* editbuffer = new TCHAR[255];
static TCHAR* allText = new TCHAR[255];
.
, который даст вам строковые буферы, которые могут удерживать 254 символов и завершать NULL CHAR.
Однако я бы порекомендовал вам просто зарезервировать память в стеке внутри вашей функции:
void OnButtonClick()
{
TCHAR editbuffer[255] = {0};
TCHAR allText[255] = {0};
...
}
.