- Открыть Visual Studio 6.0 и выбрать пункт меню File|NEW для вывода панели диалога.
- Выбрать ATL COM AppWizard и задать поле Project Name SimpleAtlCom и нажать OK, чтобы принять установки проекта, на следующем шаге будет показана панель диалога
- Нажать Finish, чтобы принять установки проекта, эти два шага создадут пустой COM DLL проект.
- Затем выбрать в меню Insert пункт New ATL Object…, добавить объект ATL к проекту
- Выбрать Simple Object и нажать Next, тогда появится панель свойств объекта.
- На закладке Names дать короткое имя, как SimpleObj, остальные поля на этой панели диалога установятся автоматически (но их можно поменять по желанию).
- На закладке Attributes
- Для потоковой модели (Threading Model) выбрать установку по умолчанию Apartment, поскольку большинство приложений, использующих компоненты согласуется с этой моделью.
- Затем для интерфейса (Interface) снова выбрать установку по умолчанию на Dual (этот интерфейс можно использовать в скриптовых языках)
- Оставить установки по умолчанию и для Aggregation и Free Threaded Marshaler, поскольку они предназначены для более продвинутого использования
- Поддержка ISupportErrorInfo предоставляет объемную текстовую информацию приложению клиента, которое будет использовать разрабатываемый интерфейс. Пока в этом нет необходимости, и нужно оставить этот блок контроля неотмеченным.
- Последний блок контроля обеспечивает поддержку событий компонента через интерфейс IConnectionPoint, поэтому отметь этот блок контроля и нажать OK, чтобы добавить объект к проекту.
- В результате в проекте возникнет IDL файл (simpleAtlCom.idl), приведенный ниже.
import “oaidl.idl”;
import “ocidl.idl”;
[
object,
uuid(2EBAAFF2-2C95-48B0-B7AB-4F29731699D4),
dual,
helpstring(«ISimpleObj Interface»),
pointer_default(unique)
]
interface ISimpleObj : IDispatch
{
};
[
uuid(9355E51A-D0A3-46FE-A1DD-546BFD9D8128),
version(1.0),
helpstring(«SimpleAtlCom 1.0 Type Library»)
]
library SIMPLEATLCOMLib
{
importlib(“stdole32.tlb”);
importlib(“stdole2.tlb”);
[
uuid(E5D5A4E6-9F14-42AA-8018-D02CF6331C5E),