![]() |
|
|
![]()
|
|
| vinter |
|
||||||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 4 Всего: 56 |
Можно ли прикрепит диалог созданный не в ресурсах??
Я пытаюсь сделать так
ф-ия создания Dialogbar
Выкидывает сюда
Вот, не знаю че делать |
||||||
|
|||||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Не делать так. Первый твой фрагмент кода - полная ересь. Можно создать диалог, минуя ресурсы, но для этого нужно сгенерировать в памяти реальный DLGTEMPLATE. Так что сформулируй задачу точнее. -------------------- ... |
|||
|
||||
| vinter |
|
||||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 4 Всего: 56 |
Почему??? диалог же создается...
Мне надо создать диалог минуя ресурсы, чтобы потом прикрепить его к CDialogBar.. |
||||
|
|||||
| Earnest |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Вот поэтому:
Должен быть реальный шаблон, существующий. А шаблона "Цвета" нет в ресурсах, отсюда и ругань при выполнении. Диалог создается внутри API, к шаблону доступа нет.
1й способ: сгененерировать шаблон в памяти (z уже говорила, DLGTEMPLATE) 2й способ: создать пустую панль (по пустому шаблону из ресурсов), и накидать туда контролов динамически, на OnCreate. Ты что, хочешь использовать "готовый" шаблон стандартного диалога выбора цветов? Не выйдет. Да и в чем проблема, нарисовать шаблон самому? Функциональность то все равно ручками придется прописывать. -------------------- ... |
||||
|
|||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 4 Всего: 56 |
создал блок диалога в памяти, а как теперь привязать его к какому- нибудь идентификатору???
|
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 4 Всего: 56 |
И еще вопрос.. Как на этом диалоге теперь контролы создавать??? Ведь он как бы еще не создан(как я понимаю
|
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Что создал? DLGTEMPLATE? И зачем тебе теперь идентификатор? Если ты про DLGTEMPLATE, так в нем описания контролов и содержатся. -------------------- ... |
|||
|
||||
| vinter |
|
||||||||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 4 Всего: 56 |
Так че то не понятно как теперь его к DialogBar привязать...
Да вот только где контролы брать, при создании у них надо указывать родителя... на всякий случай выкладываю как создавал диалог.. *.сpp
*.h
|
||||||||
|
|||||||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
1) Тебе нужен DLGTEMPLATE, а не DLGITEMTEMPLATE (первый содержит вторые, и все это должно располагаться в одном блоке памяти).
2) Чтобы создать диалог по шаблону, есть функция CreateDlgIndirect. К сожалению, готовой функции у DialogBar для этого нет, придется написать самому. Для этого спиши слова у функции CDialogBar::Create, но вместо вызова CreateDlg, поставь CreateDlgIndirect, ну и другие правки, связанныем отсутствием идентификатора - например, данных для инициализации у тебя не будет. В архиве класс CDlgTemplate, который оборачивает шаблон и умеет создавать непрерывный блок DLGTEMPLATE. А вот пример использования (заполнения). Не забудь, что координаты и размеры элементов в шаблоне диалоговые, а не пиксельные. Здесь создается что-то вроде таблички для редактирования атрибутов: для каждого элемента создается статик + едит.
Присоединённый файл ( Кол-во скачиваний: 7 )
DlgTempl.rar 2,73 Kb-------------------- ... |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 4 Всего: 56 |
Earnest что то не совсем понял ,что имеется ввиду, Откуда списать то?? А потом мне просто зыбыть ,что существует CDialogBar ,и просто создавать диалог видоизмененной ф-ией CDialogBar'а?? |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Из кода MFC конечно. Про диалог-бар забывать не надо - ведь тебе нужна его функциональность, раз уж ты выбрал его в качестве основы? Нужно написать свой вариант создания, вот и все. Если диалог-бар для тебя не принципиален, то используй просто немодальный диалог: у CDialog есть функция создания по шаблону.
-------------------- ... |
|||
|
||||
| vinter |
|
||||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 4 Всего: 56 |
скопировал ф-ию, немного подредактировал и вот что получилось:
вызываю так
Ошибок не возникает, но и диалог не появляется...Почему такое происходит? Из основной ф-ии вроде ничего связанного с отображением не удалял Добавлено @ 14:29 Кстати ,такое впечатление что он появляется, и тут же исчезает. Потому что заметно какое-то мигание когда пытаешься его создать... |
||||
|
|||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Глядя на код сказать не могу... Могу подсказать варианты, куда двигаться.
1) Попробовать таким образом создать немодальный диалог (CDialog), с помощью готовой функции - исключить ошибки, связанные с шаблоном. 2) Посмотреть Спаем, панель есть, но не видна, или его таки уже нет (смотреть детей окна, куда ты помещаешь панель). 3) Поставить обработчики на WM_SHOWWINDOW и WM_DESTROY, посмотреть по стеку почему это посылается (не факт, что получится). Это конечно, если сама функция создания отдебажена... Ты, кстати, стиль WS_CHILD не забываешь перед созданием поставить? Что-то не видно в коде... -------------------- ... |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 4 Всего: 56 |
написал ф-ию обраьотчик WM_SHOWWINDOW, так вот при отладке он в эту ф-ию заходит, т.е все нормально , в этот же момент spy нормально видит мой диалог, вот только потом он куда-то исчезает
в OnDestroy он не заходит...
забывал, но теперь поставил.. |
|||
|
||||
| Dart |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 26.6.2006 Где: Саратов, РФ Репутация: 2 Всего: 2 |
vinter, А зачем именно без ресурсов?
Тут мы недавно похожую тему обсуждали: о Property Pages Я после этого 2 дня убил - пытался все таки докопаться. Ни фига А в твоем зачем? Не проще ли все таки руками создать в ресурсах и не париться. Диалог бар - он и есть диалог бар. P.S. А в конце концов я создал для такого случая один диалог без контролов вообще, а все необходимые контролы создал динамически. --------------------
ЦитатаЛюблю смотреть, как другие работают Дж. К. ДжеромСайт: www.ecosigma.ruПочта: [email protected] |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |