zoukankan      html  css  js  c++  java
  • delphi 在DLL中添加窗体.

    方案一:

      在DLL工程中新建一个FORM窗体.在窗体中加入如下代码:

      1.首先需要再 implementation 之前声明下以下函数.

     1  procedure SynApp(App:THandle);stdcall;
     2 
     3    begin
     4 
     5     Application.Handle := App ;   
     6 
     7    end;
     8 
     9 
    10   Procedure ShowForm;stdcall ;
    11 
    12   begin
    13 
    14     MainForm := TMainForm.Create(Application);
    15 
    16     MainForm.show ;
    17 
    18   end;

      2.在DLL文件中导出表写入:

      

    1 exports 
    2 
    3   SynApp,
    4 
    5   ShowForm;

      3.让窗口显示需要传入进程句柄.

    1 SynApp(Application.Handle);
    2 
    3   ShowForm;

      完成.

    方案二.此方案来自郁金香老师.

      1.新建DLL.在DLL文件中添加一个FORM.

      先在DLL文件中添加如下关键代码:

      

     1 if Form1 = nil then begin Form1.:= TForm1.Create(nil);
     2 
     3   Form1.Visable: = not From1.Visable ;
     4 
     5   end;
     6 
     7       //但是这样子会有问题..如果卸载这个DLL的时候,相应的程序也会跟着退出.
     8 
     9   //所以必须写一个加载卸载处理函数
    10 
    11   procedure DllEnterProc(reason:integer);
    12 
    13   begin
    14 
    15     case reason of
    16 
    17     windows.DLL_PROCESS_ATTACH: begin end;
    18 
    19     windows.DLL_PROCESS_DETACH:begin Form1.Free;Form1.nil; end;
    20 
    21   end;
    22 
    23   

      在最后一个end.  之前添加如下关键代码:

      

    1 dllProc:=@DllEnterProc ;

      完成..这样既可创建含有窗体的DLL文件.

      

  • 相关阅读:
    时间随手记
    laravel简书(2)
    laravel简书(1)
    <<Design Patterns>> Gang of Four
    计算机网络你还懵逼吗?持续更新!!!
    poj3126 搜索
    POJ 1426 搜索进阶
    CodeForces 660D
    poj3279搜索详解
    bfs简单题-poj2251
  • 原文地址:https://www.cnblogs.com/Mckk/p/5272648.html
Copyright © 2011-2022 走看看