Унаследованный класс контрола - как добиться вызова Create ?
От: slonopotam  
Дата: 06.05.03 15:59
Оценка:
Проблема в следующем: есть диалог, в нем — ActiveX контрол. При этом мне требуется слегка измененное поведение
этого контрола, посему от него унаследован класс, назовем его потомком. Соответственно, этот потомок содержится в
классе диалога и связан с ним через DDX_Control. Проблема в том, что при создании диалога вызывается Create базового
ActiveX контрола, а не потомка — что, впрочем, естественно — в .rc прописан именно базовый контрол. Но заменить его
на потомка в .rc я не могу — потомок это не полноценный ActiveX контрол, у него нет своего зарегистрированного класса
окна и т.п. Но мне нужно только одно — чтобы при создании диалога вызывался Create() потомка.
Что лучше/проще всего сделать в такой ситуации?
Re: Унаследованный класс контрола - как добиться вызова Crea
От: template  
Дата: 07.05.03 09:16
Оценка:
Здравствуйте, slonopotam, Вы писали:

S>Проблема в следующем: есть диалог, в нем — ActiveX контрол. При этом мне требуется слегка измененное поведение

S>этого контрола, посему от него унаследован класс, назовем его потомком. Соответственно, этот потомок содержится в
S>классе диалога и связан с ним через DDX_Control. Проблема в том, что при создании диалога вызывается Create базового
S>ActiveX контрола, а не потомка — что, впрочем, естественно — в .rc прописан именно базовый контрол. Но заменить его
S>на потомка в .rc я не могу — потомок это не полноценный ActiveX контрол, у него нет своего зарегистрированного класса
S>окна и т.п. Но мне нужно только одно — чтобы при создании диалога вызывался Create() потомка.
S>Что лучше/проще всего сделать в такой ситуации?

Все зависит от ситуации, а она не совсем ясна. Если нужно поменять характеристики окна перед созданием можно PreCreateWindow использовать. Если нужна иницализауция чего-то еще WM_CREATE я думаю подойдет. Опиши более конкретно для чего это нужно
Re[2]: Унаследованный класс контрола - как добиться вызова C
От: Joker3D Россия http://blog.trunin.com
Дата: 07.05.03 14:05
Оценка:
Здравствуйте, template, Вы писали:

T>Здравствуйте, slonopotam, Вы писали:


S>Проблема в следующем: есть диалог, в нем — ActiveX контрол. При этом мне требуется слегка измененное поведение

S>этого контрола, посему от него унаследован класс, назовем его потомком. Соответственно, этот потомок содержится в
S>классе диалога и связан с ним через DDX_Control. Проблема в том, что при создании диалога вызывается Create базового
S>ActiveX контрола, а не потомка — что, впрочем, естественно — в .rc прописан именно базовый контрол. Но заменить его
S>на потомка в .rc я не могу — потомок это не полноценный ActiveX контрол, у него нет своего зарегистрированного класса
S>окна и т.п. Но мне нужно только одно — чтобы при создании диалога вызывался Create() потомка.
S>Что лучше/проще всего сделать в такой ситуации?

Тогда создавай его руками и сам дергай Create(...)

T>Все зависит от ситуации, а она не совсем ясна. Если нужно поменять характеристики окна перед созданием можно PreCreateWindow использовать. Если нужна иницализауция чего-то еще WM_CREATE я думаю подойдет. Опиши более конкретно для чего это нужно


...на самом деле не PreCreateWindow, а PreSubclassWindow т.к. ни WM_CREATE ни PreCreateWindow твоему классу не прийдет — создается то ведь размещенный в ресурсах контрол а уже позже уже он субклассится твоим классом...
Konstantin Trunin
http://blog.trunin.com — эффективное управление людьми, проектами, собой
Re[3]: Унаследованный класс контрола - как добиться вызова C
От: template  
Дата: 08.05.03 05:31
Оценка:
Здравствуйте, Joker3D, Вы писали:

JD>...на самом деле не PreCreateWindow, а PreSubclassWindow т.к. ни WM_CREATE ни PreCreateWindow твоему классу не прийдет — создается то ведь размещенный в ресурсах контрол а уже позже уже он субклассится твоим классом...


Спасибо, что поправил
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.