Re[4]: Проблемы с ActiveX-контролом на форме из DLL
От: Fantasist  
Дата: 14.11.02 01:54
Оценка:
Вот даже примерчик наваял, зачем-то. Под настроение. Правда на Delphi, но суть та же.


uses
  SysUtils,
  Classes, ActiveX, ComObj, VCF1;

const
  DLL_PROCESS_DETACH = 0;
  DLL_PROCESS_ATTACH = 1;


procedure MainDll(Reason:Integer);
begin
 if Reason=DLL_PROCESS_ATTACH then
   CoInitialize(nil)
 else
 if Reason=DLL_PROCESS_DETACH then
   CoUninitialize;
end;

function SaveToXls:HRESULT;
var
 ui:IUnknown;
 IBook:_DVCF1;
begin
 Result:=S_OK;
 try
   OleCheck(CoCreateInstance(CLASS_F1Book,nil,CLSCTX_INPROC_SERVER,IUnknown,ui));
   IBook:=ui as _DVCF1; //Тут если в Builder as нету, будет QueryInterface.
   IBook.Col:=1;
   IBook.Row:=1;
   IBook.Number:=300;
   IBook.Col:=2;
   IBook.Row:=2;
   IBook.Text:='My text';
   IBook.Write('c:\1\1.xls', F1FileExcel4);
 except
   on E: EOleSysError do
     Result:=E.ErrorCode;
   else
     Result:=E_UNEXPECTED;
 end;
end;

exports
   SaveToXls;

begin
  DllProc:=MainDll;
  DllProc(DLL_PROCESS_ATTACH);
end.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.