| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > инициализация ActivX контрола |
| Автор: Ferrisgeneral 22.6.2010, 15:22 |
| Столкнулся с необходимостью использовать Microsoft Forms 2.0 CommandButton (ActivX Control). добавляю в диалоговое окно (через контекстное меню), и конечно же не вижу кнопочки (кроме как в привьющке). Где то видел, что надо инициализировать контрол прежде чем создавать окно в котором будет контрол, и вот тут перестаю понимать, чего же нужно сделать. проект с добавленным контролом: http://www.sendspace.com/file/cumtel |
| Автор: xvr 22.6.2010, 18:07 |
| ActiveX control будет работать только внутри ActiveX контейнера. Обычный диалог таковым контейнером не является. |
| Автор: Ferrisgeneral 22.6.2010, 23:58 |
| а как создается этот ActiveX контейнер ? и можно ли будет им пользоваться в диалоговом окне. |
| Автор: xvr 23.6.2010, 09:04 | ||||
Смотри исходники в ATL (CAxWindow CAxWindow2 в atlwin.h)
|
| Автор: Ferrisgeneral 23.6.2010, 17:13 |
| неужели все настолько сложно ? ... и еще ATL надо применять (дело с ним никогда не имел) |
| Автор: xvr 23.6.2010, 20:10 |
| Да. ActiveX с 'голым' WinAPI не сочетаются |
| Автор: Ferrisgeneral 23.6.2010, 21:08 | ||
| а какой тогда надо код надо добавить, чтобы подружить контрол с WinAPI. пытался перед созданием окна инициировать контрол
вот только при заполнении структуры, не знаю какой флаг нужно применить для инициализации контрола (стандартные флаги конечно же не катят). Библиотеку и header конечно же подключал. |
| Автор: xvr 24.6.2010, 08:20 |
CommonControls и ActiveX это не одно и то же, точнее это совсем разные вещи. Для CommonControls достаточно позвать InitCommonControlsEx перед созданием окна (диалога). Для ActiveX ваше окно должно выступать в роли ActiveX контейнера, т.е. имплементировать несколько COM интерфейсов и передать их ActiveX контролу после его создания. Как это делать я уже писал - см. исходники в ATL (я не призываю брать саму ATL, только посмотреть как сделано) |
| Автор: Ferrisgeneral 24.6.2010, 11:53 |
| ATL всеравно бы не смог воспользоваться http://ipicture.ru/Gallery/Viewfull/499020.html |
| Автор: xvr 24.6.2010, 13:25 |
| С чего бы это вдруг? То, что на ATL нельзя сделать WF CommandButton еще не означает, что ее нельзя вставить в ActiveX контейнер, сделанный с применением ATL. Кстати, у вас точно ActiveX контрол? Может это все таки .NET компонент? Ему даже ActiveX контейнер маловато будет. |
| Автор: Ferrisgeneral 24.6.2010, 22:50 |
| насколько я понимаю, всетаки ActiveX, хотя может и ошибаюсь. Добавлял контрол так - в диалоговом окне в контекстном меню выбираю пунт insert ActiveX Control и в открывшемся окне выбираю пункт Microsoft Forms 2.0 CommandButton (хотя в другой версии студии в этом окне 4 закладки и данных контрол находится в закладке COM). у меня стоит VS 2008 Pro SP1. PS: а что, вообще реально использовать сделанные в дизайнере .Net окна и контролы ? |
| Автор: xvr 25.6.2010, 12:15 | ||||
Похоже ActiveX
|
| Автор: Ferrisgeneral 26.6.2010, 16:31 |
| при каких условиях можно будет использовть .Net контролы в связке с WinAPI ? |
| Автор: xvr 27.6.2010, 21:17 | ||
IMHO не при каких (хотя я подробно этот вопрос не изучал) |