国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

一個值得大家來考慮的DLL問題

2019-11-18 18:22:19
字體:
來源:轉載
供稿:網友

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


上一篇:DLL全局鉤子

下一篇:建立、讀取、存貯INI文件的方法《一》

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 洛南县| 辉县市| 龙里县| 南川市| 闽侯县| 阿尔山市| 宁安市| 灌云县| 伊宁市| 噶尔县| 个旧市| 长海县| 揭西县| 达拉特旗| 万安县| 霍城县| 漳平市| 离岛区| 彭阳县| 广河县| 台南县| 拜泉县| 杭州市| 昌图县| 邵阳县| 兴宁市| 石嘴山市| 牙克石市| 克什克腾旗| 邹城市| 邵阳市| 嘉兴市| 太原市| 连云港市| 西乌珠穆沁旗| 清涧县| 登封市| 新竹市| 确山县| 勃利县| 竹溪县|