ВУЗ:
Составители:
Рубрика:
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
- …
- следующая ›
- последняя »