C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 95 -Чем нам может помочь директива Import / ActiveX по шагам / Приложение

Шаг 95 -Чем нам может помочь директива Import

Помочь она может удобно использовать COM объекты. Вы знаете, что для использования COM объектов нам нужны описания интерфейсов. Вот импорт в этом может и помочь. Очень просто и удобно использовать COM объекты в Ваших программах. Итак, я для тестирования создал простой COM объект на основе Atl Com Wizard. И реализовал в нем всего один интерфейс:

STDMETHODIMP CCTestDll::MessageMi()
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState())
	MessageBox(0,"Hello","Test",MB_OK);
	return S_OK;
} 

Потом создал программу которая будет использовать этот объект и используя директиву Import сделал ссылку на DLL, в которой находиться COM.

#include "stdafx.h"
#include "ole2.h"
#import "D:\VС\TestDll\Debug\TestDll.dll"

void main()
{
	CoInitialize(NULL); 
	using namespace TESTDLLLib;
	ICTestDllPtr Itest(__uuidof(CTestDll),NULL, CLSCTX_ALL);
	Itest->MessageMi();
	Itest=NULL; 
	CoUninitialize();
}

Самое главное откуда и что берется. using namespace TESTDLLLib говорит о использовании пространства имен объекта COM. Имя формируется так. TestDll приводиться к верхнему регистру и становиться TESTDLL потом у нему прибавляется Lib и получается имя пространства имен TESTDLLLib. Для другого объекта так же формируется:

В Верхний регистр
+ Lib

Откуда взялось ICTestDllPtr а оно извлекается VC++. Посмотрите в глобальном пространстве.

95_1.gif (3953 b)

В свою очередь эти имена берутся от имен классов в DLL.

95_2.gif (1706 b)

Ну, а приставка Ptr добавляется автоматически. Как видите поддержка COM объектов реализована очень приятно. Все происходит за пределами видимости программиста. Константа CLSCTX_ALL отвечает за контекст выполнения.

#define CLSCTX_ALL (CLSCTX_INPROC_HANDLER | CLSCTX_SERVER)

Подробнее смотрите в "Шаг 93 - Разница удаленного COM EXE и COM DLL".


| |
Автор Каев Артем.
[AD]