快速业务通道

Windows的动态链接库原理及使用2

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30
存块的句柄。

在写入数据前,服务器必须锁定全局内存,以避免在写入过程中Windows移动该内存块的位置。

函数GlobalLock锁定全局内存并返回指向该内存块的指针:

pMem := GlobalLock(hMem);

对pMem的任何修改都会反映到全局内存块中。

对内存块进行操作后,调用GlobalUnLock进行解锁。内存块操作之后尽早解锁,有利于Windows充分利用内存资源。

服务器写入数据的实现代码如下。

    var
      hMem: THandle;
      pMem: PChar;
     begin
      hMem := GetGlobalMem;       {获得全局内存块的句柄}
      if hMem <> 0 then
      begin
       pMem := GlobalLock(hMem);  {加锁全局内存块}
       if pMem <> nil then
       begin
        StrPCopy(pMem,Memo1.text); {向全局内存块写入数据}
        GlobalUnlock(hMem);     {解锁全局内存块} 
       end
       else
        MessageDlg(''Couldnot Lock memory block'',mtWarning,[mbOK],0);
      end;

3.2.3 客户程序的编写

客户程序几乎是服务器程序的翻版。唯一的区别在于一个是写入数据,一个是下载数据。

下面是客户从全局内存块下载数据的程序清单。

    var
      hMem: THandle;
      pMem: PChar;
     begin
      hMem := GetGlobalMem;     {获得全局内存块的句柄}
      if hMem <> 0 then
      begin
       pMem := GlobalLock(hMem);  {加锁全局内存块}
       if pMem <> nil then
       begin
        Memo1.text := StrPas(pMem); {从全局内存块读取数据}
        GlobalUnlock(hMem);     {解锁全局内存块}
       end
       else
        MessageDlg(''Couldnot Lock memory block'',mtWarning,[mbOK],0);
      end;

4 利用DLLs实现窗体重用

实现窗体重用是Delphi DLLs功能中一个引人注目的特色。当你创建了一个令自己满意的通用窗体并希望能在不同应用程序中使用,特别是希望能在非Delphi 应用程序中使用时,把窗体做进一个动态链接库中是最适当的。这样即使用其它工具开发的应用程序,如C++、Visual Basic等,也都可以去调用它。

包含窗体的DLLs有100K左右的部件库(Component Library)开销。可以通过把几个窗体编译成一个DLLs来最小化这笔开销。DLl中的不同窗体可以共享部件库。

4.1 利用DLLs实现窗体重用的一般步骤

利用DLLs实现窗体重用的步骤是:

1.在集成开发环境(IDE)中,按自己的需要设计一个窗体;

2.编写一个用于输出的函数或过程。在该函数或过程中,设计的窗体被实例化;

3.重复步骤1、2,直到完成所有重用窗体的设计;

4.打开工程文件,进行修改,以适应生成 .dll文件的需要:

(1).把保留字program设为library;

(2).从uses子句中去掉Forms单元;

(3).移去begin,end之间的所有代码;

(4).在uses子句下,begin…end块之前,添加保留字exprots。exports 后是输出函数名或过程名。

5.编译生成DLLs文件;

6.在其它应用程序中调用重用窗体。

重用窗体的调用同一般DLLs函数或过程的调用完全一致,不再赘述。读者可参看下面的例子。

4.2 窗体重用实例

下面我们通过一个具体的实例来说明窗体重用的设计过程。我们在一个名为passform.dll 的文件中储存了一个口令设置窗口和一个口令检查窗口。而后在一个Delphi 编写的程序和一个VB编写的程序中进行调用。事实证明这种方法是完全可行的。

4.2.1 窗体重用DLLs的设计

窗体重用DLLs的设计依照(4.1)中介绍的步骤进行。DLLs中的两个窗体 S

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号