Вроде элемент создан. Только для того, чтобы скомпилировать проект осталось доделать некоторые мелочи. Например, для компиляции объявить библиотеку initguid.h в основном модуле.
// // mycom.cpp // #include "windows.h" #include "initguid.h" #include "ClassFactory.h" ......
Далее создать DEF файл, чтобы объявить экспортируемые функции:
; ; MyCOM.def ; LIBRARY "MYCOM" DESCRIPTION 'MYCOM Windows Dynamic Link Library' EXPORTS DllGetClassObject PRIVATE DllCanUnloadNow PRIVATE
Вот теперь можно сделать REG файл для того, чтобы поместить информацию о нашем элементе в системный реестр.
REGEDIT HKEY_CLASSES_ROOT\My.Component.1 = Step My Com HKEY_CLASSES_ROOT\My.Component.1\CLSID = {3F5942E1-108B-11d4-B050-000001260696} HKEY_CLASSES_ROOT\CLSID\{3F5942E1-108B-11d4-B050-000001260696} = Step My Com HKEY_CLASSES_ROOT\CLSID\{3F5942E1-108B-11d4-B050-000001260696}\ProgID = My.Component.1 HKEY_CLASSES_ROOT\CLSID\{3F5942E1-108B-11d4-B050-000001260696}\InprocServer32 = D:\PROJECT\MyCom\Debug\MyCom.dll
Смысл этих записей в том, что мы создаем в реестре раздел с именем My.Component.1 и присваиваем ему CLSID. О непосредсвенно по CLSID уже в дальнейшем мы даем разные атрибуты. Но главное здесь InprocServer32, именно он ответственнен за вызов DLL и создании класса. То есть за местонахождение сервера.
В минимальном виде COM элемент готов. В следующих шагах сделаем клинета !!!! Честное слово на то, чтобы это все понять я потратил целую неделю. Вообще-то на взгляд просто. В минимальном варианте.