Страница 1 из 1

Как програмно изменить стиль елемента управления?

Добавлено: 25 авг 2004, 16:19
Marjan
Привет!
Не знаешь ли Ты как програмно изменить стиль елемента управления? Функция CWnd::ModifyStyle() не меняет стиль. Чтобы было понятнее пример. Я создаю стандартный елемент ComboBox. Он выглядет так:
----------------------------------
| |
---------------------------------
| |
| |
| |
| |
----------------------------------
Я хочу сделать его выпадаючим (Смотри панель address на броузере).
Заранее благодарен.

Добавлено: 25 авг 2004, 18:19
Romeo
Проблема-то в чём. Он выпадать не хочет, что ли? :)

Добавлено: 26 авг 2004, 11:28
Marjan
Ты не понял. Другой пример. CEdit может быть однострочным или иметь многа строк (стиль ES_MULTILINE). Но после того как ты его создал однострочным ты не можешь сделать его многострочным, и наоборот.

Добавлено: 26 авг 2004, 11:52
Romeo
Верно, именно стиль ES_MULTILINE нельзя менять после того, как контрол был создан (так гласит вездесущая MSDN), хотя множество остальных стилей можно изменять с помощью хотя бы SetWindowLong.

Выход такой: Edit не располагаем на форме, а создаём динамически с помощью CreateWindow(CreateWindowEx). В тот момент, когда возникает необходимость изменить его статический стиль - просто убиваем этот едит с помощью DestroyWindow и создаём вновь с требуемым стелем. Для пользователя такие манипуляции пройдут незамеченными... А результат налицо :)

Добавлено: 26 авг 2004, 12:32
Marjan
Не красиво как-то, но иного вихода наверное нету. Спасибо за совет! БООООООООООООЛЛЛЛЬЬЬЬЬЬЬЬЬШШООООООООООООООООООООООООООООЕЕЕЕЕЕЕЕЕЕЕЕ
СПОСИБО!!!

Добавлено: 26 авг 2004, 12:43
Romeo
Мдя, за такую мелочь, ТАКОЕ спасибо... аж приятно :)