Application.Handle:=AHandle;把这句去掉试试!

解决方案 »

  1.   

    unit useradd;
    interface
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ComCtrls, DB, ADODB;type
      TfrmUsrAdd = class(TForm)
    .
    .
    .
    procedure showFrmUsrAdd(AHandle:THandle) ;stdcall;implementationprocedure showFrmUsrAdd(AHandle:THandle);stdcall;
    begin
    Application.Handle:=AHandle;
    with frmuserass do
        try
            frmuseradd:=Tfrmuseradd.create(application);
            ShowModal;
        finally
            free;
        end;
    end;
    .
    .
    .
    libraryexports 
    showFrmUsrAdd;就可以了,给分!!!!
      

  2.   

    在delphi6中有Application.Handle:=AHandle;这句编译通不过,不知道是什么原因?
      

  3.   

    回复人: 9527(不爱灌水的鱼) (  ) 信誉:100  2002-06-06 09:20:00  得分:0  
     
     
      我的一个程序:function ShowCalculator(mainApp:TApplication;calcForm:TForm;var calcValue:real):boolean;stdcall;
    begin
      if calcForm=Nil then
        calcForm:=TfrmCalculator.Create(mainApp);
      calcForm.ShowModal;
      calcValue:=calcResult;
      calcForm:=Nil;
      Result:=calcTransMode;
    end;
      exports ShowCalculator;
      function ShowCalculator(application:TApplication;calcForm:TForm;var calcTransValue:real):boolean;stdcall;external 'CalculatorDll.Dll';        if ShowCalculator(application,calcForm,calcTransValue) then
              Face.DisplayFocus^.Text :=FloattoStr(calcTransValue);  
     
      

  4.   

    gwq197325(小伟) :
    你给的那段程序和我的错误一样:提示‘无效的窗口句柄’delphimo:
    把Application.Handle:=AHandle;把这句去掉
    是可以,但是新开的窗口在会出现在任务栏上,
    我想是需要传递application的句柄给dll 的,但不知道为什么这个句柄总算传不过来。谢谢各位,谁能给个例程?
    稍后把传递句柄的问题解决后,就给分。谢谢~!
      

  5.   

    9527(不爱灌水的鱼) 大侠,你能把完整的程序发给我么?
    我的信箱:[email protected] 
    谢谢~!!
      

  6.   

    偶再补充一下:
    原来出错是因为可执行程序中是静态调用的dll,导致无法传递application.handle给dll
    后来改成动态调用就好了。
    3x各位。
      

  7.   

    调用时:showFrmUsrAdd(application.handle)
    就可以了