Re: ActiveX (server?) с пoмощью WinApi
От: MishaSt  
Дата: 15.01.06 12:36
Оценка:
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q159621&sd=tech
[MSDN]
1. Q. What is the difference between an OLE control and an ActiveX control?

A. No difference. "ActiveX control" renames and restructures the OLE controls technology. For marketing reasons, the term OLE has come full circle and once again refers to the OLE technologies that apply to object linking and embedding only. The term "OLE control" has been replaced with the "ActiveX control" to distance the name from the older Object Linking and Embedding technology with which controls have very little in common. No one should use the term "OLE control" anymore.
[/MSDN]

Читайте Inside OLE
http://soproger.utech.ru/shelek/viewfiles.php-id=18.htm

Но прежде чем вы собираетесь бежать качать книгу и писать на WinApi OLE-сервер, скажу, что затея эта не очень хорошая,
что легче и лучше взять ATL т.к иначе вам придётся реализовать кучу интерфейсов, на это уйдёт у вас месяц, и после этого вы обнаружете, что ваш контрол не будет работать и в половине контейнеров, хотя вы могли бы в ATL сделать его за пару дней. Писать ActiveX контрол имеет смысл если вы чётко знаете, что это должен быть за контрол, и в каком приложении должен работать, и хорошо разбираться в OLE и COM.

Вам обязательно нужно будет реализовать интерфейсы

IOleObject Для того, чтобы контейнер мог узнать ваш видимый размер с помощью GetExtent, для того, чтобы контейнер мог подавать вам команды с помощью DoVerb
IOleInPlaceObject Для того, что
IViewObject2 Для отрисовки не активированного объекта
IClassFactory для создания объекта. Это основа COM.

Кроме того, если хотите от OLE-объекта получать события в контейнере, то так же нужно реализовать интерфейсы
IConnectionPointContainer — контейнер точек соединения
IConnectionPoint точка соединения.

Если хотите страницы свойств — ну тогда ещё нужно реализовать. Акселератор — ещё реализовать. Для сериализации контрола — ещё. Для drag'n'drop — ещё...


Однако если бы шибко нужно было сделать контрол простенький типа кнопки, и приспичило именно на WinApi, то взяться можно было бы, если бы не оставалось другого выбора...
... << RSDN@Home 1.1.4 stable rev. 625>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.