DLLの実施形態にMDI子パッケージ

DLLの実施形態にMDI子パッケージは、一般的なソフトウェア開発技術、彼の強みであります:

R&Dスタッフは、モジュールR&D、メインプログラム統一コールの完了後、(+インタフェースロジック)は、それが相互に干渉する可能性が含まれるモジュールを製造するための原因です。 
簡単にアップグレードプログラム、プログラムのアップグレードは、メインのexeファイルをコンパイルしていないとき、DLLがアップグレードすることができます更新。 
別の顧客のニーズに応じて、それらを異なるモジュールの価格を与えます。(暴利は喜んYongzhe趙されている)
のオンライン弟は、少しグーグルので、最近使用したこの技術が使用されていない、次のように私は以下に要約COMベースのDLLを使用し、彼を知るようになりました。

DLLパッケージMDI子フォームにしたい、私たちは次のことに注意してください。

インタフェースDLLは、次の2つのパラメータがあります;第二、メインプログラムウィンドウオブジェクト、まず、Applicationオブジェクトのメインプログラムを 
使用するには、DLLのエントリ関数をオーバーライドしたい 
、それがCOM、ノートに基づいている場合:なしのCOMのTApplicationので、あなたは整数に強い合格する必要があり、TFormはタイプ、。
そんなに注意を必要とする、次の例では、(あなたがプロジェクトを設立したと仮定した場合)を確認することです。

  TComDllTest1 =クラス(TAutoObject、IComDllTest1)
  プライベート
    FMsgStr:WideStringに。
    関数GetMDIForm(AForm:TFormは):ブール。
  保護
    {保護宣言}
    関数Get_MsgStr:WideStringに。safecallの;
    手順Set_MsgStr(CONST値:WideStringに)。safecallの;
    手順ShowMsgStr; safecallの;
    手続きはCreateForm(AHandle:SYSUINT)。safecallの;
    手続きCreateMdiForm(VARのAAPP; AForm:SYSINT)。safecallの; //创建MDI窗体SYSINT为unsigned int型
    の手順CreateComTest(AForm:SYSUINT)。safecallの;
  パブリック
    コンストラクタは(AForm:SYSINT)を作成します。
  終わり;

これはCreateMdiForm方法が実現されます。

TComDllTest1.CreateMdiForm手順(VARのAAPP; aForm:SYSINT);
VAR
  アプリケーション:のTApplication;
  AF:TFormは、
開始
  アプリケーション:=のTApplication(AAPP); //順番に渡されたApplicationオブジェクト強く
  AF:= TFormは(AForm); / / Formオブジェクトは強く順番に渡さ

  アプリケーション:=アプリ; //メインプログラムは、エンジニアリングアプリケーションのCOMオブジェクトのアプリケーションに支給されます

  ないGetMDIForm(Form1が)その後、//場合 GetMDIFormはフォームが作成されているかどうかを判断することです
  開始
    をForm1:= TForm1.Create(AF); //子フォームの作成
  Form1.FormStyle:; = fsMDIChild
  Form1.Show;
  END;
終了;

最後のステップは、最も重要であり、DLLプロジェクトの文書を、アドレスが書き換えられていない場合は、エラーが報告されます、DLLのエントリ関数を書き換えるメインウィンドウを閉じて、私はこの損失(I・カーンを......)食べるよことです書き込み:

DLLUnloadProc手順(理由:整数);登録するには、
開始
 IF(理由= DLL_PROCESS_DETACH)または(理由= DLL_THREAD_DETACH)[アプリケーション:= DLLApp; //グローバルのTApplicationは、DLLプロジェクトのドキュメントで定義されているDLLAppオブジェクト
                                          Applicationオブジェクトを保存するために使用//
エンド;

の位置に追加されたDLLの初期化:

   DLLApp:=アプリケーション; //予約済みアプリケーション
   DLLProc:= @DLLUnloadProc; //書き換えエントリ関数のアドレスが支払わDLLProc

DLLパッケージMDI子フォームのこの実現には、当然のことながら、次のような子フォームになりたい:データベース操作するだけでなく、豊かなインターフェース、確かに様々な問題に実行されます。要約した後、それを言うために!^ _ ^

おすすめ

転載: www.cnblogs.com/bdqczhl/p/10937169.html