一个值得大家来考虑的DLL问题

原创 2004年05月27日 10:27:00

在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.

作为大型网站架构必须考虑的十大问题

文章来源:PHP开发学习门户 地址: http://www.phpthinking.com/archives/489 这里的大型网站架构只包括高互动性高交互性的数据型大型网站,基于大家...
  • Ksly_Tkol
  • Ksly_Tkol
  • 2014年09月30日 13:35
  • 1788

金钱兑换问题 动态规划 打印兑换后的硬币

有一个货币系统,有n 种硬币,每种硬币的面值为 v1,v2,……,vn, 且 v1 必定为 1 , 目的是兑换价值为 sum 的钱,让硬币数量最少。 result[ j ] 表示价值总钱为 j 的最...
  • u014311181
  • u014311181
  • 2015年11月11日 14:51
  • 332

wikioi天梯之3145 汉诺塔游戏

题目
  • leo1949asd
  • leo1949asd
  • 2014年04月15日 19:38
  • 1081

WPF的多线程问题

原帖  WPF线程处理模型 收藏 http://msdn.microsoft.com/zh-cn/library/ms741870.aspxWindows Presentation Foundatio...
  • Maths_bai
  • Maths_bai
  • 2010年11月10日 17:03
  • 4185

iOS study Day8- 宏

//1、定义一个名为MIN2的宏,它给出两个值中的较小值。然后编写一个程序来测试这个宏定义。 //2、定义一个名为MAX3的宏,它给出三个值的最大值,然后编写一个程序来测试这个宏定义。 /...
  • chairwon
  • chairwon
  • 2014年03月27日 14:39
  • 619

Spider技术:设计Spider时要解决的几个问题(作者:渡渡鸟工作室)

2007-05-01 22:10 作者:渡渡鸟工作室 http://hi.baidu.com/dudubi...
  • chengg0769
  • chengg0769
  • 2007年07月15日 17:42
  • 1347

《算法导论》笔记 第15章 15.3 动态规划基础

【笔记】 最优子结构 重叠子问题 构造最优解
  • cyendra
  • cyendra
  • 2014年04月27日 14:15
  • 1169

运动框架和隐藏边框

一个完美的运动框架是经过不断地改善调整过来的,可以适合各种样式的运动。在JS运动中一下几点是至关重要的: 1.不加绝对定位的话是肯定不会动的! 2.运动框架中:在开始运动时,关闭已有定时器。把运动...
  • zhaoke_930325
  • zhaoke_930325
  • 2017年07月21日 17:12
  • 136

[递归]CODEVS-3145 汉诺塔游戏

CODEVS-1842 递归第一次递归递归,即定义一组基本操作,这组操作将规模小一点(或大一点)的操作当做一个整体——无需关心它的细节,只当它已经完成了——然后执行剩下的操作。而在更小或更大的规模中也...
  • qq_27848507
  • qq_27848507
  • 2017年03月23日 12:19
  • 443

CPU 设计的若干问题

1.      处理器的应用领域?通信领域(以太网协议,HDLC,PPP等常用协议的电路设计)、工业控制领域、消费领域(手机、打印机)、桌面(运算性能)及服务器领域(可靠性,可服务性)。 2.    ...
  • chenglian_999
  • chenglian_999
  • 2009年10月07日 09:40
  • 532
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个值得大家来考虑的DLL问题
举报原因:
原因补充:

(最多只允许输入30个字)