Моя проблема с простым окном редактирования. Это определяется так:
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.
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");