Добавление строки в многострочный edit

Тема в разделе "WASM.BEGINNERS", создана пользователем deathwisher, 25 май 2006.

  1. deathwisher

    deathwisher New Member

    Публикаций:
    0
    Регистрация:
    20 май 2006
    Сообщения:
    36
    Уважаемые программисты, подскажите как можно осуществить следующее действие: я создаю многострочный 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);

    }

    но это все же не решение проблемы.

    Подскажите как можно решить проблему. Спасибо.
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Получаешь длину текста (GetWindowTextLength), устанавливаешь "выделение" в его конце (EM_SETSEL), заменяешь это выделение (а по сути, добавляешь текст в конец существующего) (EM_REPLACESEL). Если надо добавить текст с новой строки, добавляешь к тексту "\n".
     
  3. deathwisher

    deathwisher New Member

    Публикаций:
    0
    Регистрация:
    20 май 2006
    Сообщения:
    36
    а с неактивным окном, в котором нельзя редактировать текст, этот способ работать будет?
     
  4. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    а попробовать?
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Вообще-то, "неактивное" окно — это в котором нет фокуса. А текст редактировать нельзя либо в недоступном окне (disable), либо read-only.
     
  6. DPX

    DPX New Member

    Публикаций:
    0
    Регистрация:
    13 фев 2005
    Сообщения:
    47
    Адрес:
    Russia
    кстати, чтобы установить курсор в конец строки, вроде бы можно не использовать GetWindowTextLength, а написать просто -1. У меня работает.
     
  7. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    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.
     
  8. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    стремно юзать раз оно так слабо документировано