unit BBS;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBClient, SimpleDS, Grids, DBGrids;type
TBBSForm = class(TForm)
BBSDBGrid: TDBGrid;
BBSSimpleDataSet: TSimpleDataSet;
BBSDataSource: TDataSource;
private
{ Private declarations }
public
{ Public declarations }
end;var
BBSForm: TBBSForm;function CreateBBSForm(AHandle: THandle;panel :TwinControl):boolean;stdcall;overload;implementation{$R *.dfm}
function CreateBBSForm(AHandle: THandle;panel :TwinControl):boolean;stdcall;overload;
begin
application.Handle :=AHandle;
BBSForm :=TBBSForm.Create(BBSForm);
try
BBSForm.ParentWindow :=panel.Handle;
BBSForm.Align :=alClient;
BBSForm.BorderStyle :=bsNone;
BBSForm.BBSSimpleDataSet.FileName :=ExtractFilePath(Application.ExeName)+'\data\a.xml';
BBSForm.BBSSimpleDataSet.Active :=true;
BBSForm.BBSDataSource.DataSet := BBSForm.BBSSimpleDataSet;
BBSForm.BBSDBGrid.DataSource := BBSForm.BBSDataSource;
BBSForm.Show;
Result :=False; except
on e:Exception do
begin
Result :=true;
BBSForm.Free;
ShowMessage('xmlForm DLL error '+e.Message);
end;
end
end;
exports
CreateBBSForm(AHandle: THandle; panel: TwinControl) name 'CreateBBSForm';end.
调用type
CreateBBSForm=function (AHandle: THandle;panel :TwinControl):boolean;stdcall;{$R *.dfm}
procedure TMainForm.OpenBBS;
var
Thad:THandle;
CreateBBS :CreateBBSForm;
begin
MainForm.BorderIcons := [biSystemMenu,biMinimize,biMaximize];
MainForm.AutoSize :=false;
MainForm.WindowState :=wsMaximized;
try
Thad :=SafeLoadLibrary('BBSDLL.dll');
if Thad =0 then
begin
Raise Exception.Create('faild load library');
end;
CreateBBS := GetProcAddress(Thad,'CreateBBSForm');
CreateBBS(Handle,Panel1);
FreeLibrary(Thad);
except
on e:exception do
showmessage(e.Message);
end
{打开论坛部分窗口}
end;提示错误.怎么这么奇怪.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBClient, SimpleDS, Grids, DBGrids;type
TBBSForm = class(TForm)
BBSDBGrid: TDBGrid;
BBSSimpleDataSet: TSimpleDataSet;
BBSDataSource: TDataSource;
private
{ Private declarations }
public
{ Public declarations }
end;var
BBSForm: TBBSForm;function CreateBBSForm(AHandle: THandle;panel :TwinControl):boolean;stdcall;overload;implementation{$R *.dfm}
function CreateBBSForm(AHandle: THandle;panel :TwinControl):boolean;stdcall;overload;
begin
application.Handle :=AHandle;
BBSForm :=TBBSForm.Create(BBSForm);
try
BBSForm.ParentWindow :=panel.Handle;
BBSForm.Align :=alClient;
BBSForm.BorderStyle :=bsNone;
BBSForm.BBSSimpleDataSet.FileName :=ExtractFilePath(Application.ExeName)+'\data\a.xml';
BBSForm.BBSSimpleDataSet.Active :=true;
BBSForm.BBSDataSource.DataSet := BBSForm.BBSSimpleDataSet;
BBSForm.BBSDBGrid.DataSource := BBSForm.BBSDataSource;
BBSForm.Show;
Result :=False; except
on e:Exception do
begin
Result :=true;
BBSForm.Free;
ShowMessage('xmlForm DLL error '+e.Message);
end;
end
end;
exports
CreateBBSForm(AHandle: THandle; panel: TwinControl) name 'CreateBBSForm';end.
调用type
CreateBBSForm=function (AHandle: THandle;panel :TwinControl):boolean;stdcall;{$R *.dfm}
procedure TMainForm.OpenBBS;
var
Thad:THandle;
CreateBBS :CreateBBSForm;
begin
MainForm.BorderIcons := [biSystemMenu,biMinimize,biMaximize];
MainForm.AutoSize :=false;
MainForm.WindowState :=wsMaximized;
try
Thad :=SafeLoadLibrary('BBSDLL.dll');
if Thad =0 then
begin
Raise Exception.Create('faild load library');
end;
CreateBBS := GetProcAddress(Thad,'CreateBBSForm');
CreateBBS(Handle,Panel1);
FreeLibrary(Thad);
except
on e:exception do
showmessage(e.Message);
end
{打开论坛部分窗口}
end;提示错误.怎么这么奇怪.
BBSForm.Parent :=panel;
handle在哪儿?
Panel1在哪儿?