Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> инициализация ActivX контрола 
:(
    Опции темы
Ferrisgeneral
Дата 22.6.2010, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 11.1.2010

Репутация: нет
Всего: нет



Столкнулся с необходимостью использовать Microsoft Forms 2.0 CommandButton (ActivX Control).
добавляю в диалоговое окно (через контекстное меню), и конечно же не вижу кнопочки (кроме как в привьющке). Где то видел, что надо инициализировать контрол прежде чем создавать окно в котором  будет контрол,  и вот тут перестаю понимать, чего же нужно сделать.

проект с добавленным контролом:
http://www.sendspace.com/file/cumtel
PM MAIL   Вверх
xvr
Дата 22.6.2010, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



ActiveX control будет работать только внутри ActiveX контейнера. Обычный диалог таковым контейнером не является.

PM MAIL   Вверх
Ferrisgeneral
Дата 22.6.2010, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 11.1.2010

Репутация: нет
Всего: нет



а как создается этот ActiveX контейнер ? и можно ли будет им пользоваться в диалоговом окне.
PM MAIL   Вверх
xvr
Дата 23.6.2010, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(Ferrisgeneral @ 22.6.2010,  23:58)
а как создается этот ActiveX контейнер ? 

Смотри исходники в ATL (CAxWindow CAxWindow2 в atlwin.h)
Цитата

и можно ли будет им пользоваться в диалоговом окне.
Наверное, но придется немного поплясать с бубном (я сам никогда такого не делал)

PM MAIL   Вверх
Ferrisgeneral
Дата 23.6.2010, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 11.1.2010

Репутация: нет
Всего: нет



неужели все настолько сложно ? ... и еще ATL надо применять (дело с ним никогда не имел)
PM MAIL   Вверх
xvr
Дата 23.6.2010, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(Ferrisgeneral @  23.6.2010,  17:13 Найти цитируемый пост)
неужели все настолько сложно ?
Да. ActiveX с 'голым' WinAPI не сочетаются smile Его придумывали для компонентного программирования, так что он нормально (в смысле без кучи дополнительного кода) работает только в средах, которые для этого были сделаны (разные RAD и WEB в основном)


PM MAIL   Вверх
Ferrisgeneral
Дата 23.6.2010, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 11.1.2010

Репутация: нет
Всего: нет



а какой тогда надо код надо добавить, чтобы подружить контрол с WinAPI.


пытался перед созданием окна инициировать контрол

Код

    //создание и заполнение структуры
    tagINITCOMMONCONTROLSEX gg;
    ZeroMemory(&gg, sizeof(gg));
    gg.dwSize = sizeof(gg);
    gg.dwICC = ????? ;

    //передаю адрес в инициализирующую функцию
    InitCommonControlsEx(&gg);


вот только при заполнении структуры, не знаю какой флаг нужно применить для инициализации контрола (стандартные флаги конечно же не катят). Библиотеку и header конечно же подключал.
PM MAIL   Вверх
xvr
Дата 24.6.2010, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(Ferrisgeneral @  23.6.2010,  21:08 Найти цитируемый пост)
пытался перед созданием окна инициировать контрол


Цитата(Ferrisgeneral @  23.6.2010,  21:08 Найти цитируемый пост)
InitCommonControlsEx(&gg);

CommonControls и ActiveX это не одно и то же, точнее это совсем разные вещи. 
Для CommonControls достаточно позвать InitCommonControlsEx перед созданием окна (диалога). Для ActiveX ваше окно должно выступать в роли ActiveX контейнера, т.е. имплементировать несколько COM интерфейсов и передать их ActiveX контролу после его создания. Как это делать я уже писал - см. исходники в ATL (я не призываю брать саму ATL, только посмотреть как сделано)


PM MAIL   Вверх
Ferrisgeneral
Дата 24.6.2010, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 11.1.2010

Репутация: нет
Всего: нет



ATL всеравно бы не смог воспользоваться

user posted image
PM MAIL   Вверх
xvr
Дата 24.6.2010, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(Ferrisgeneral @  24.6.2010,  11:53 Найти цитируемый пост)
ATL всеравно бы не смог воспользоваться
С чего бы это вдруг? То, что на ATL нельзя сделать WF CommandButton еще не означает, что ее нельзя вставить в ActiveX контейнер, сделанный с применением ATL.

Кстати, у вас точно ActiveX контрол? Может это все таки .NET компонент? Ему даже ActiveX контейнер маловато будет.

PM MAIL   Вверх
Ferrisgeneral
Дата 24.6.2010, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 11.1.2010

Репутация: нет
Всего: нет



насколько я понимаю, всетаки ActiveX, хотя может и ошибаюсь.
Добавлял контрол так - в диалоговом окне в контекстном меню выбираю пунт insert ActiveX Control и в открывшемся окне выбираю пункт Microsoft Forms 2.0 CommandButton (хотя в другой версии студии в этом окне 4 закладки и данных контрол находится в закладке COM).
у меня стоит VS 2008 Pro SP1.

PS: а что, вообще реально использовать сделанные в дизайнере .Net окна и контролы ?
PM MAIL   Вверх
xvr
Дата 25.6.2010, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(Ferrisgeneral @ 24.6.2010,  22:50)
насколько я понимаю, всетаки ActiveX, хотя может и ошибаюсь.
Добавлял контрол так - в диалоговом окне в контекстном меню выбираю пунт insert ActiveX Control и в открывшемся окне выбираю пункт Microsoft Forms 2.0 CommandButton (хотя в другой версии студии в этом окне 4 закладки и данных контрол находится в закладке COM).


Похоже ActiveX
Цитата

PS: а что, вообще реально использовать сделанные в дизайнере .Net окна и контролы ?
В 'голом' WinAPI .Net контролы и окна? Практически нет.

PM MAIL   Вверх
Ferrisgeneral
Дата 26.6.2010, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 11.1.2010

Репутация: нет
Всего: нет



при каких условиях можно будет использовть .Net контролы в связке с WinAPI ?
PM MAIL   Вверх
xvr
Дата 27.6.2010, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(Ferrisgeneral @ 26.6.2010,  16:31)
при каких условиях можно будет использовть .Net контролы в связке с WinAPI ?

IMHO не при каких (хотя я подробно этот вопрос не изучал)

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.1211 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.