ВУЗ:
Составители:
Рубрика:
42
imlementation
function TClassFactory. CreateInstance(unkOuter:IUnknown;
const IID:TGID;varObj): HResult;
var
NewIntfComponentObject:TNewIntfComponentObject;
if(unkOuter < > Nil) then //-если объединение интерфейсов не
//поддерживается
begin
Result:=CLASS_E_NOAGGREGATION
Exit;
end;
try
NewIntfComponentObject:=TNewIntfComponentObject. Create;
try
AddRef;
Result:= NewIntfComponentObject. QueryInterfase(IDD, Obj);
finally
Release;
end;
except
Result:=E_OUTOFMEMORY;
end;
end;
function TClassFactory. LockServer(fLock:Bool):Hresult;
begin
if fLock then
Inc(Global_Object_Count);
else
Dec(Global_Object_Count);
Result:=NOERROR;
end;
Заметим, что использование ключевого слова interfase позволяет
более компактно определять новые интерфейсы. Специальные
классы TComObject и TComObjectFactory сокращают исходный код
сервера, так как при их использовании не надо определять
реализации
методов IUnknown и IClassFactory. В этом случае
определение класса составного объекта должно выглядеть
следующим образом:
TNewIntfComponentObject=class(TComObject,
TComObjectFactory,
INewInterfase)
Определение методов нового интерфейса
imlementation
function TClassFactory. CreateInstance(unkOuter:IUnknown;
const IID:TGID;varObj): HResult;
var
NewIntfComponentObject:TNewIntfComponentObject;
if(unkOuter < > Nil) then //-если объединение интерфейсов не
//поддерживается
begin
Result:=CLASS_E_NOAGGREGATION
Exit;
end;
try
NewIntfComponentObject:=TNewIntfComponentObject. Create;
try
AddRef;
Result:= NewIntfComponentObject. QueryInterfase(IDD, Obj);
finally
Release;
end;
except
Result:=E_OUTOFMEMORY;
end;
end;
function TClassFactory. LockServer(fLock:Bool):Hresult;
begin
if fLock then
Inc(Global_Object_Count);
else
Dec(Global_Object_Count);
Result:=NOERROR;
end;
Заметим, что использование ключевого слова interfase позволяет
более компактно определять новые интерфейсы. Специальные
классы TComObject и TComObjectFactory сокращают исходный код
сервера, так как при их использовании не надо определять
реализации методов IUnknown и IClassFactory. В этом случае
определение класса составного объекта должно выглядеть
следующим образом:
TNewIntfComponentObject=class(TComObject,
TComObjectFactory,
INewInterfase)
Определение методов нового интерфейса
42
Страницы
- « первая
- ‹ предыдущая
- …
- 40
- 41
- 42
- 43
- 44
- …
- следующая ›
- последняя »
