![]() |
|
|
![]()
|
|
| 0x07L |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 10.6.2006 Где: Москва Репутация: 1 Всего: 5 |
Делаю элемент управления, производный от CWnd. Как его создать в диалоговом окне с помощью мастера? Делаю так:
--- бросаю на форму "Custom Control" --- создаю, как обычно, свой класс, производный от CWnd --- в классе диалогового окна добавляю член-объект моего класса --- перегружаю функцию DoDataExchange и вставляю туда соответствующий DDX_Control. Проблема в том, что диалоговое окно не создается. Даже OnInitDialog не вызывается. То же самое происходит, если просто кинуть на форму "Custom Control" и не трогать его. Видимо, надо еще что-то сделать. Что? Могу привести тестовую программку. Заранее спасибо. |
|||
|
||||
| 0x07L |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 10.6.2006 Где: Москва Репутация: 1 Всего: 5 |
Да, опять я чего-то перемудрил. И "Custom Control" оказался не тем, о чем я думал... В общем, переформулирую вопрос: как сделать так, чтобы мой элемент управления можно было создавать с помощью мастера? Я понимаю, что, скорее всего, это осуществить не получится.
|
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Именно. Чтобы создать свой элемент с помощью редактора ресурсов, нужно, чтобы был подходящий исходный. Если такового нет - только через Create. Custom Control - тоже можно, но по-моему, это неудобно и громоздко.
Я обычно делаю так. Кладу на форму в нужно месте статик (рамку) нужного размера с нужным идентификатором и некоторыми стилями. Затем у меня есть функция, которая создает на месте этого статика нужное мне окно с тем же ид-ром в том же z-порядке, а ненужный статик - удаляет. Вот ее код: (Функция определена в базовом классе, от которого все диалоги наследуются)
Пользоваться - очень просто: в классе-диалоге объявляем переменную нужного типа, скажем CMyClass m_wndMy; Потом в OnInitDialog вызываем Replace (IDC, &m_wndMy); Все. Стили WS_GROUP,WS_TABSTOP,WS_VISIBLE копируются (к сожалению, из статика больше не выжмешь). Важное замечание: поскольку Create вызывается с нулевым стилем, нужно в PreCreateWindow подставить нужный класс, если то, что MFC использует по умолчанию не подходит. -------------------- ... |
|||
|
||||
| 0x07L |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 10.6.2006 Где: Москва Репутация: 1 Всего: 5 |
Спасибо!
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |