![]() |
|
![]() ![]() ![]() |
|
Vyacheslav |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 59 |
Есть задача - создать композитный контрол, состоящий из набора других. Для примера(повторяю - только для примера) создаем контрол , содеожащие в себе три кнопки.
При создании возникли проблемы. 1) Где должен быть размещен вызвов Create для m_button, что бы все показывалось как при динамическом создании контрола, так и при вставке в ресурс CustomControl и указании для него соответсвующего имени класса? 2)Как перехватить сообщения от buttons внутри контрола? PS. Более 10 лет программирую на С++, но только сечас имел честь ознакомиться с MFC в силу производственной необходимости . И ... MFC - это все что угодно и возможно даже замечательная библиотека, но к ООП имеет весьма отдаленное отношение. -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
srd |
|
||||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 5 Всего: 49 |
Вызов Create() для m_button должен находиться в методе Create() родительского контрола CCompositeControl.
При создании дочернего контрола - кнопки указывайте в качестве родителя окно CCompositeControl. Все сообщения от кнопки шлются родителю. -------------------- Не смей читать мою подпись!!! |
||||
|
|||||
Vyacheslav |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 59 |
1) Create не вызывается при "нединамическом" создании контрола. Такой способ подойдет только если вручную вызывать CCompositeControl::Create. И это то я то как раз так и сделал. Но при этом кнопки не создаются и не соответсвенно не прорисовываются, если если CCompositeControl создавать не с помощью Create, а посредством вставки в ресусурс CustomControl
2) Я так и делал, но к сожалению ничего не проходит. Вернее не проходит ничего, что хотя бы отдаленно напоминало событие нажатия кнопки -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
oper54 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 217 Регистрация: 13.5.2005 Репутация: нет Всего: 1 |
Может такой вариант подойдет - все тоже, только для вывода кнопок на экран использовать статик который и станет родителем кнопок....
Вроде такого
|
|||
|
||||
srd |
|
||||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 5 Всего: 49 |
Прошу прощения, я имел в виду не метод Create(), а обработчик сообщения WM_CREATE.
Странно, кнопка всегда отсылает своему родительскому окну уведомление о нажатии BN_CLICKED. Прийду домой, попробую создать проект и посмотреть. -------------------- Не смей читать мою подпись!!! |
||||
|
|||||
Vyacheslav |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 59 |
Правильно. С этим я разобрался. Там была чисто моя ошибка. С WM_CREATE я проверю -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
Гость_прохожий |
|
|||
Unregistered |
Не заработает. Надо переопределить PreSubclassWindow |
|||
|
||||
Vyacheslav |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 59 |
И в PreSubclassWindow необходимые манипуляции по созданию кнопок выполнять ?
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
Гость_прохожий |
|
|||
Unregistered |
![]() |
|||
|
||||
srd |
|
|||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 5 Всего: 49 |
Дома дождаться получения WM_CREATE у меня не получилось. И понятно почему, сабклассируется то уже созданное окно. А PreSubclassWindow действительно вызывется после вызова SubclassDlgItem(). Муторное это дело, создание элемента управления на основе ресурса диалога, проще уж руками.
Гость прохожий, почему не регистрируешься? Получил бы плюс к репутации ![]() -------------------- Не смей читать мою подпись!!! |
|||
|
||||
Гость_прохожий |
|
|||
Unregistered |
Пока я только прохожий, если решу более ли менее постоянно зависнуть, так зарегюсь
![]() |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |