Delphi

本类阅读TOP10

·游戏外挂设计技术探讨①
·如何使用Delphi设计强大的服务器程序
·分布式网络考试系统原型分析及实现
·用DLL方式封装MDI子窗体。
·使用HOOK随心监视Windows
·Delphi 水晶报表打包解决
·url编码与解码工具附代码
·工人线程中关闭窗体的实现
·hdsi2.0 sql注入部分抓包分析语句
·Borland Delphi 2005 下载

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
一个值得大家来考虑的DLL问题

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

在MDI窗体类型的编程中,主窗体(fsMDIForm)怎样调用子窗体(fsMDIChild,此子窗体为DLL)。
以下是我的原代码:
==========================================================================================
DPR  单元代码

program Mdiform;

uses
  Forms,
  UMdiform in 'UMdiform.pas' {Mainform},
  UDM in 'UDM.pas' {GlobalDM: TDataModule},
  UFun in 'UFun.pas';

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TMainform, Mainform);
  Application.Run;
end.
===============================================================================================

主窗体代码:
unit UMdiform;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Udm,StdCtrls;
type
 
  TMainform = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
     MyHandle:HWND;
    { Public declarations }
  end;

var
  Mainform: TMainform;

type
  T_ShowTestMng=function (var adm:TMainform) : Boolean; StdCall;

implementation
{$R *.dfm}

procedure TMainform.Button1Click(Sender: TObject);
var
  Lib_         :THandle;
  _ShowTestMng :T_ShowTestMng;
begin
  Lib_:=LoadLibrary(pchar('MdiChild.dll'));
  try
    @_ShowTestMng:=GetProcAddress(Lib_,'_ShowTestMng');
    if not(@_ShowTestMng=nil) then
      _ShowTestMng(Mainform);
  finally
    FreeLibrary(Lib_);
  end;
end;

procedure TMainform.FormCreate(Sender: TObject);
begin
 MyHandle:=Application.Handle;
end;

end.
==============================================================================================

子窗体DLL代码:
library MdiChild;

uses
  ShareMem,
  UMdiform,  //此单元为父窗体单元,在顶目设置中我已经设置了搜索此单元在路径。
  Forms,
  SysUtils,
  Classes,
  UChild in 'UChild.pas' {FrmChild};//FrmChild子窗体的FormStyle属性为FsMDIChild

{$R *.res}
function _ShowTestMng(var adm:TMainform) : Boolean; StdCall;
begin
  result:=true;
  Application.Handle:=adm.MyHandle;
  Application.CreateForm(TFrmChild,FrmChild);   //程序就出错在此:出错原因是:Cannot create form. No MDI Forms are currently active.
  FrmChild.Show;
end;

exports
    _ShowTestMng;
end.




相关文章

相关软件




月光软件程序下载编程文档电脑教程网站设计网址导航网络文学游戏天地幽默笑话生活休闲写作范文安妮宝贝
电脑技术编程开发网络专区谈天说地情感世界游戏元素分类游戏热门游戏体育运动手机专区业余爱好影视沙龙
音乐天地数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区地方风情各行各业

月光软件站·版权所有