我在主程序中动态调用dll。为何在dll中创建窗体后立刻进入窗体的onshow过程中呢?代码如下:主程序:
ShowForm(Self.Handle, Self.cxpb_Downfile, Pchar('a'),Pchar(LoginUserName),Pchar(LoginUserPwd),pchar('a'),nil,nil,LoginUserJB,CurrentKC,WebClass);
其中Self.cxpb_Downfile是一个进度条控件,WebClass是自定义的一个类实例
dll文件:
procedure ShowForm(AHandle: THandle;cxpb_Downfile:TCXProgressBar;DllFileName, UserName, Password,UserGroupName,
  ExtendParam1, ExtendParam2: PChar;UserJb:Integer;CurrentKC:String;WebClass:TWebClass); stdcall;
begin
  Application.Handle := AHandle;
  frm_BM := Tfrm_BM.Create(nil);//程序执行到此后,直接调用 Tfrm_BM.FormShow,未执行下列5行代码
  frm_BM.cxpb_Downfile:=cxpb_Downfile;
  frm_BM.LoginUserName:=UserName;
  frm_BM.LoginUserPwd:=password;
  frm_BM.LoginUserJB:=userjb;
  frm_BM.WebClass:=WebClass;
  frm_BM.CurrentKC:=CurrentKC;
  frm_BM.ShowModal;
  frm_BM.Free;
end;procedure Tfrm_BM.FormShow(Sender: TObject);
var
  i:integer;
  BMNums:Integer;
  ServerMD5:String;
begin
  GetTableInfoXX('GetTable_JBYY_Info','Table_JBYY');
  GetTableInfoXX('GetTable_XB_Info','Table_Xb');
  GetTableInfoXX('GetTable_MZ_Info','Table_MZ');
  GetTableInfoXX('GetTable_ZY_Info','Table_ZY');
  GetTableInfoXX('GetTable_WHCD_Info','Table_WHCD');
  GetTableInfoXX('GetTable_BLCJZL_Info','Table_BLCJZL');
  GetTableInfoXX('GetTable_CJPXZL_Info','Table_CJPXZL');
  BMNums:=GetBMNum;
  FillDataSet;
  if ( BMNums<>Self.Stu_Set.RecordCount) then
  begin
    GetBMXX('0') ;
    FillDataSet;
  end;
end;