首页 / 软件开发 / Delphi / 第十章-动态链接库编程(二)(4)
第十章-动态链接库编程(二)(4)2007-05-0710.4.2.2 Delphi应用程序调用重用窗体 在Delphi应用程序中调用重用窗体,首先必须包含passform.dll的两个输出函数: function GetPassword(Password: PChar): Boolean;far; external "c:dllsPassForm";function SetPassword(PassWord: PChar): Boolean;far; external "c:dllsPassForm";这位于程序单元的implementation部分。口令设置部分的实现代码为: procedure TForm1.SetButtonClick(Sender: TObject);beginPassWord := StrAlloc(40);if SetPassWord(PassWord) = False thenMessageDlg("PassWord is not set",mtInformation,[mbOK],0); end;首先为口令字符串分配内存。当口令设置窗体按Cancel按钮取消时,显示相应的信息。口令检查部分的实现代码为: procedure TForm1.TestButtonClick(Sender: TObject);beginif PassWord = nil thenbeginMessageDlg("Set password first", mtInformation, [mbOK], 0);SetButton.SetFocus;Exit;end;if GetPassword(PassWord) thenLabel1.Caption := "You are Wellcome !"elseLabel1.Caption := "Sorry,You are InValid User.";end;根据口令检查的结果,在标签框中显示相应的信息。 10.4.2.3 VB应用程序调用重用窗体 VB是微软公司极力推荐的一个可视化开发工具。它虽然并不支持动态链接库的创建,但可以调用标准的Windows API动态链接库和用其它语言编写的动态链接库。为了验证所生成DLLs的普适性,我们用VB开发了一个简单的程序来调用passform.dll中储存的窗体。下面是VB程序的完整代码,和Delphi程序的对应部分基本一致。 Option ExplicitDeclare Function GetPassWord Lib "c:dllspassform.dll" (ByVal PassWord As String) As IntegerDeclare Function SetPassWord Lib "c:dllspassform.dll" (ByVal PassWord As String) As Integer Dim PassWord As String * 40Sub Check_Click ()If PassWord = "" ThenMsgBox ("Enter sample password first")SetPass.SetFocusElseIf GetPassWord(PassWord) ThenStatusLbl.Caption = "You are Welcome!"ElseStatusLbl.Caption = "Sorry,You are Invalid User."End IfEnd IfEnd SubSub SetPass_Click ()If SetPassWord(PassWord) = 0 ThenMsgBox ("PassWord is not Set.")End IfEnd Sub有关VB编程的一些具体问题,读者可参看有关的VB参考书。 10.4.3 小结 本章我们讨论的是动态链接库编程。许多可视化开发工具(如Visual Basic)不支持 DLLs的创建,而Delphi在这里又有上乘的表现。特别是窗体重用机制是Delphi对Windows下DLLs编程的一个重大改进。在一般的DLLs编程中也体现了Delphi快捷、方便的特点。动态链接库是 Windows下程序组织的一种重要方式,使用动态链接库可以极大地保护用户在不同开发工具、不同时期所做的工作。利用动态链接库,用户可以逐步去构筑自己的程序模块库,为今后的工作积累素材。