Проблема в следующем: есть диалог, в нем — ActiveX контрол. При этом мне требуется слегка измененное поведение
этого контрола, посему от него унаследован класс, назовем его потомком. Соответственно, этот потомок содержится в
классе диалога и связан с ним через DDX_Control. Проблема в том, что при создании диалога вызывается Create базового
ActiveX контрола, а не потомка — что, впрочем, естественно — в .rc прописан именно базовый контрол. Но заменить его
на потомка в .rc я не могу — потомок это не полноценный ActiveX контрол, у него нет своего зарегистрированного класса
окна и т.п. Но мне нужно только одно — чтобы при создании диалога вызывался Create() потомка.
Что лучше/проще всего сделать в такой ситуации?
Re: Унаследованный класс контрола - как добиться вызова Crea
Здравствуйте, slonopotam, Вы писали:
S>Проблема в следующем: есть диалог, в нем — ActiveX контрол. При этом мне требуется слегка измененное поведение S>этого контрола, посему от него унаследован класс, назовем его потомком. Соответственно, этот потомок содержится в S>классе диалога и связан с ним через DDX_Control. Проблема в том, что при создании диалога вызывается Create базового S>ActiveX контрола, а не потомка — что, впрочем, естественно — в .rc прописан именно базовый контрол. Но заменить его S>на потомка в .rc я не могу — потомок это не полноценный ActiveX контрол, у него нет своего зарегистрированного класса S>окна и т.п. Но мне нужно только одно — чтобы при создании диалога вызывался Create() потомка. S>Что лучше/проще всего сделать в такой ситуации?
Все зависит от ситуации, а она не совсем ясна. Если нужно поменять характеристики окна перед созданием можно PreCreateWindow использовать. Если нужна иницализауция чего-то еще WM_CREATE я думаю подойдет. Опиши более конкретно для чего это нужно
Re[2]: Унаследованный класс контрола - как добиться вызова C
Здравствуйте, 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
Здравствуйте, Joker3D, Вы писали:
JD>...на самом деле не PreCreateWindow, а PreSubclassWindow т.к. ни WM_CREATE ни PreCreateWindow твоему классу не прийдет — создается то ведь размещенный в ресурсах контрол а уже позже уже он субклассится твоим классом...