окно редактирования win32, отображаемое в новых строках

Моя проблема с простым окном редактирования. Это определяется так:

hEditIn=CreateWindowEx(WS_EX_CLIENTEDGE,
L"EDIT",
L"",
WS_CHILD|WS_VISIBLE|ES_MULTILINE|
ES_AUTOVSCROLL|ES_AUTOHSCROLL,
50,
120,
400,
200,
hWnd,
(HMENU)IDC_EDIT_IN,
GetModuleHandle(NULL),
NULL);

После этого, когда я вызываю SendMessage, вот так:

SendMessage(hEditIn,
WM_SETTEXT,
NULL,
(LPARAM)L"Connected\r\n");

SendMessage(hEditIn,
WM_SETTEXT,
NULL,
(LPARAM)L"TESTSTR");

Я получаю только последнее сообщение вместо первого и второе в новой строке.

Это также проблематично, потому что я хочу отображать «Подключено» каждый раз в новой строке, если serv retreive WM_ACCEPT message.

0

Решение

WM_SETTEXT заменяет все содержимое элемента управления «Правка» новым текстом. Чтобы добавить новый текст в существующий текст, используйте EM_SETSEL переместить каретку в конец существующего текста, затем использовать EM_REPLACESEL вставить новый текст в текущей позиции каретки.

void appendTextToEdit(HWND hEdit, LPCWSTR newText)
{
int TextLen = SendMessage(hEdit, WM_GETTEXTLENGTH, 0, 0);
SendMessage(hEdit, EM_SETSEL, (WPARAM)TextLen, (LPARAM)TextLen);
SendMessage(hEdit, EM_REPLACESEL, FALSE, (LPARAM)newText);
}

appendTextToEdit(hEditIn, L"Connected\r\n");
appendTextToEdit(hEditIn, L"TESTSTR");
2

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector