Уважаемые программисты, подскажите как можно осуществить следующее действие: я создаю многострочный edit, и например при нажатии кнопки хочу добавить в него строку, если не ошибаюсь, в Delphi это делалось примерно так: Memo1.Lines.Add("Text"); , при программировании на чистом API не могу проделать тоже самое. Посмотрел MSDN, но сообщения которое добавляет в это окно строку там не нашел. Пока использую сообщение WM_CHAR: void AddString(HWND hw, char *str){ for(int i = 0; i < strlen(str); i++)SendDlgItemMessage((HWND)hw,IDC_EDIT3,WM_CHAR,str,0); } но это все же не решение проблемы. Подскажите как можно решить проблему. Спасибо.
Получаешь длину текста (GetWindowTextLength), устанавливаешь "выделение" в его конце (EM_SETSEL), заменяешь это выделение (а по сути, добавляешь текст в конец существующего) (EM_REPLACESEL). Если надо добавить текст с новой строки, добавляешь к тексту "\n".
Вообще-то, "неактивное" окно — это в котором нет фокуса. А текст редактировать нельзя либо в недоступном окне (disable), либо read-only.
кстати, чтобы установить курсор в конец строки, вроде бы можно не использовать GetWindowTextLength, а написать просто -1. У меня работает.
DPX Этот метод работает ещё со времён Win16, но почему-то не особо афишируется в документации. Кстати, ошибка в msdn: "If the start is 0 and the end is 1, all the text in the edit control is selected. If the start is 1, any current selection is deselected." Должно быть -1 вместо 1 в обоих случаях, AFAIK.