Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Help! Как можно реализовать такую задачу: 
:(
    Опции темы
LexaK
Дата 13.2.2005, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 17.11.2004

Репутация: нет
Всего: нет



Задача:
В окне вида рисуется некая технологическая схема, на которую в нужных местах (по смыслу этой схемы) надо разместить контролы, которые либо что-то показывают (например, температуру), либо при нажатии на них что-то делают (например, включают/выключают реле).
Необходимо сделать так, чтобы в процессе работы эти контролы можно было перетаскивать, изменять их размеры, удалять и добавлять новые.
Вывести картинку в вид проблем не представляет, создать нужные контролы тоже.
Вопрос: как сделать описанное управление ими (и где - в классе самого контрола или в классе вида)? И как описывать функцию реакции на сообщение от контрола, если заранее неизвестен его ID?

Заранее благодарен!
PM MAIL   Вверх
Nastya
Дата 13.2.2005, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 27.3.2002
Где: Мариуполь

Репутация: 1
Всего: 44



1. Реализовавыть можно как в родительском классе. Но ихмо лучше созадать свой класс контролов и все нагрузку по пертаскиванию кинуть туда (просто обрабатывая сообщения от мыша).
2. Если ты знаеш придел в котором будет описн ID например от 500 до 1200 попробуй ON_COMMAND_RANGE , там будешь получать собственно номер отработавшего контрола. Можно сделать что бы контрол посылал сообщение радителю в котором бы передавал свой Id (посылка сообщений SendMessage)

Не знаю, вариантов много. Все зависит от конкретной задачи


--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
Coocky
Дата 14.2.2005, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 25
Всего: 62



Каждый контрол долже представлять отдельный класс,производный от базового,что б ты мог обрабатывать сообщения..
Цитата
Необходимо сделать так, чтобы в процессе работы эти контролы можно было перетаскивать, изменять их размеры, удалять и добавлять новые.

Обрабатываешь сообщения мыши над областью?Делаешь MoveWindow(),удаляешь через DestroyWindow(),какие проблемы smile
Цитата
И как описывать функцию реакции на сообщение от контрола, если заранее неизвестен его ID

smile Как это неизвестен id smile Да любой контрол создашь через Create(......а в нем всегда прописываешь ID.Получить управление над нужным контролом можно зная его ID.Если проблема какой id давать,заведи переменную,которая при новом котроле,всегда будет увеличиваться на 1,и тем самым хранить значение предудущего и знать будущего контролов.Если ті заранее не знаешь,что тебе пригодится(то ли кнопка,то ли едит,то ли еще что-то) создай сразу все нужные классы...
Цитата
и где - в классе самого контрола или в классе вида

Все сообщения касающиеся контрола,только в классе контрола!
Я уже вижу реализацию этой задачи,может не совсем понятно обьяснил,так что стучи,обьясню,что непонятно smile


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
LexaK
Дата 14.2.2005, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 17.11.2004

Репутация: нет
Всего: нет



Спасибо. В принципе, все понятно. Буду реализовывать...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0600 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.