Переключение на Главную Страницу Страницы: 1 2 [3]  ОтправитьПечать
Очень популярная тема (более 25 ответов) .NET, ActiveX, перехват событий. Ошибка (?) (число прочтений - 18197 )
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: .NET, ActiveX, перехват событий. Ошибка (?)
Ответ #30 - 17. Июля 2008 :: 14:28
Печать  
berezdetsky писал(а) 17. Июля 2008 :: 13:40:
Контролы .NET не реализуют всех необходимых интерфейсов для работы в качестве ActiveX - за ненадобностью. Для использования в унаследованных (aka устаревших) системах нужно делать свои контролы на основе UserControl. UserControl реализует интерфейсы, требуемые для использования в контейнере MFC. Т.е., скажем, для использования в контейнере VB нужны отдельные танцы с бубном.

Нда. Похоже, так и есть.
http://msdn.microsoft.com/en-us/magazine/cc301750.aspx
Цитата:
But if I write a Windows Forms control, doesn't that mean that only .NET applications can use it? There aren't many of them out there, at least not yet, so shouldn't I wait for a critical mass before I invest my development dollars? To help you answer "No" to these questions, the UserControl base class contains all the functionality that it needs to be accessible to ActiveX control hosts such as Visual Basic 6.0. This will allow a developer of a .NET control to take advantage of the enormous installed base and make a lot of money.
     You have to write one relatively small piece of code to make your .NET control accessible to ActiveX hosts. ActiveX controls make several registry entries that standard COM servers don't, so you have to add this functionality to your .NET control. The CLR contains prefabricated functions that will make and remove these entries. These go by the names Control.ActiveXRegister and Control.ActiveXUnregister. You need to provide two external functions in your control class marked with attributes that tell the .NET COM registration utility to call them during the registration process. These functions need to delegate to ActiveXRegister and ActiveXUnregister (see Figure 14). That's the only extra piece of code that you have to write today, and I wouldn't be surprised if it moved into the base class in some future version.

Тогда вопрос можно считать закрытым.
Написание UserControl'а для обертки существующего контрола - тривиальная задача.
А чтобы ловились события UserControl'ов, Артур уже постарался.
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: .NET, ActiveX, перехват событий. Ошибка (?)
Ответ #31 - 17. Июля 2008 :: 14:39
Печать  
steban писал(а) 17. Июля 2008 :: 14:28:
Написание UserControl'а для обертки существующего контрола - тривиальная задача.

А с помощью вот этой примочки: Microsoft Interop Forms Toolkit 2.0 так вообще плевое дело.
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: .NET, ActiveX, перехват событий. Ошибка (?)
Ответ #32 - 17. Июля 2008 :: 15:03
Печать  
Я даже скачал попробовать.
Создал новый проект, добавил DataGridView и написал одну строчку кода.
Потом написал код, размещающий только что созданный контрол на форме 1С и поймал нужное событие. При этом использовалась тестовая сборка Артура, выложенная в этой ветке.
« Последняя редакция: 17. Июля 2008 :: 17:03 - steban »  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: .NET, ActiveX, перехват событий. Ошибка (?)
Ответ #33 - 18. Июля 2008 :: 03:22
Печать  
Вопрос: а нельзя ли это дело автоматизировать?
Например, сделать спец.контрол на Нет, который может включать любой другой контрол Нет, с прозрачной передачей всех событий, свойств и методов ?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: .NET, ActiveX, перехват событий. Ошибка (?)
Ответ #34 - 18. Июля 2008 :: 07:05
Печать  
artbear писал(а) 18. Июля 2008 :: 03:22:
Вопрос: а нельзя ли это дело автоматизировать?
Например, сделать спец.контрол на Нет, который может включать любой другой контрол Нет, с прозрачной передачей всех событий, свойств и методов ?

Насчет свойств и методов - уверен, что реализуемо.
Насчет событий надо подумать....
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: .NET, ActiveX, перехват событий. Ошибка (?)
Ответ #35 - 13. Августа 2008 :: 22:53
Печать  
Хоть кто-то смог запустить System.Windows.Forms.ToolStrip или System.Windows.Forms.ToolBar ?

Проклял весь MS со всеми формами вместе взятыми Улыбка
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: .NET, ActiveX, перехват событий. Ошибка (?)
Ответ #36 - 25. Сентября 2008 :: 14:05
Печать  
Интересная разработка по NET-контролам http://infostart.ru/projects/2062 от Душелова.
Кто-нибудь (Артем? Улыбка ) может проверить NET-контролы с неработающими в 1С++ событиями вместе с этим контролом ?

Если удастся получить события от данного контрола, можно будет будет выполнить все, что нужно в 1С++, также нативно, как сделано для событий АктивИкс, ТП, Перехватчика и т.д.

Кто протестирует?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: .NET, ActiveX, перехват событий. Ошибка (?)
Ответ #37 - 26. Сентября 2008 :: 06:44
Печать  
artbear писал(а) 25. Сентября 2008 :: 14:05:
Интересная разработка по NET-контролам http://infostart.ru/projects/2062 от Душелова.
Кто-нибудь (Артем? Улыбка ) может проверить NET-контролы с неработающими в 1С++ событиями вместе с этим контролом ?

Если удастся получить события от данного контрола, можно будет будет выполнить все, что нужно в 1С++, также нативно, как сделано для событий АктивИкс, ТП, Перехватчика и т.д.

Кто протестирует?

В итоге протестировал сам Улыбка
Свершилось - события System.Windows.Forms.Button ловятся в АктивИкс при помощи этого контрола

Просто у автора в демо-примере для 77 была опечатка -
событие контрола было описано как
АктХ_ПриВозникновАнииСобытия - букву "А" с буквой "е" перепутал Улыбка
Исправил, как положено, и события заработали.
.
Автору очередной респект. Молодец, так держать Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: .NET, ActiveX, перехват событий. Ошибка (?)
Ответ #38 - 26. Сентября 2008 :: 13:49
Печать  
Блин, рано обрадовался Печаль
События-то ловятся, но вот параметры событий нифига не передаются.

Посмотрел код 1С++ в отладчике, похоже, что использование функции 1С в ((CBLMyEx*)NULL)->DispParamToValueEx неверно работает, если из ВК передается SafeArray, что и делает данная ВК

Либо я не умею готовить Печаль Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: .NET, ActiveX, перехват событий. Ошибка (?)
Ответ #39 - 01. Октября 2008 :: 19:46
Печать  
Пардон муа, Артур. Ушел в себя на пару недель - только вышел из спячки. Так ничего и не получилось? Печаль
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: .NET, ActiveX, перехват событий. Ошибка (?)
Ответ #40 - 02. Октября 2008 :: 03:37
Печать  
artbear писал(а) 26. Сентября 2008 :: 13:49:
Блин, рано обрадовался Печаль
События-то ловятся, но вот параметры событий нифига не передаются.

Да, пока именно такое состояние - события от NET есть, но их параметров нет Печаль
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 
ОтправитьПечать