![]() |
|
![]() ![]() ![]() |
|
Tkashey |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 22.3.2007 Репутация: нет Всего: нет |
Необходимо: динамически менять свойство у CEdit'а, отвечающее за перенос "вылезающего" текста на новую строку (в notePAD'е такое называется "перенос по словам").
CEdit создаю динамически:
и по событию из меню добавляю горизонтальный ScrollBar:
горизонтальный ScrollBar появляется, но CEdit'om игнорируется. Если по событию из меню разрушать CEdit и пересоздать его со свойством WS_HSCROLL, работает:
Как решить вопрос без разрушения CEdit'a? |
||||||
|
|||||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Так тебе вроде менять ES_MULTILIBE нужно.
Как я понимаю, нужно либо ES_MULTILINE, либо WS_HSCROLL. Т.е. либо m_pEdit->ModifyStyle (ES_MULTILINE, WS_HSCROLL, SWP_FRAMECHANGED), либо наоборот. -------------------- ... |
|||
|
||||
Tkashey |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 22.3.2007 Репутация: нет Всего: нет |
ES_MULTILINE - отвечает за наличие в CEdite более чем одной строки, а я хочу поменять/восстановить свойство при котором строки, длинной больше чем ширина CEdit'a, будут урезаться до ширины CEdit'a, а не поместившаяся часть перенесётся на новую строку. Вот пример со строкой = 'Это пример "переноса по словам". ', которая якобы не поместилась по длине ("-","|" - это границы поля CEdit): 1) Перенос по словам включен CEdit--------------------- |Это пример "перен| |оса по словам". | |Еще текст | --------------------------- 2) Перенос по словам выключен CEdit--------------------- |Это пример "перен| |Еще текст | | | --------------------------- Кстати при использовании такого кода:
m_pEdit по прежнему остается многострочным, а при пересоздании всё меняется! Видимо ошибка одна и таже, только вот какая? |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Попробуй еще стиль ES_AUTOHSCROLL.
Добавлено через 33 секунды
-------------------- ... |
|||
|
||||
Tkashey |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 22.3.2007 Репутация: нет Всего: нет |
ES_AUTOHSCROLL также как и WS_BORDER срабатывает только при пересоздании CEdit'a
|
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Чисто для интереса, проверь Спаем - эти стили появляются (исчезают) или нет?
А вообще есть такие стили, которые только при создании установить можно. Может и не повезло... -------------------- ... |
|||
|
||||
heleg86 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 15.7.2008 Репутация: нет Всего: нет |
Похожая проблема была.
Нужно выставить правильно флаги Например добавим скролл m_Edit.ModifyStyle(0,WS_VSCROLL,SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED); BOOL ModifyStyle( DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0 ); If nFlags is nonzero, ModifyStyle calls the Windows API function SetWindowPos and redraws the window by combining nFlags а вот уже из SetWindowPos читаем If you have changed certain window data using SetWindowLong, you must call SetWindowPos to have the changes take effect. Use the following combination for uFlags: SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED. |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |