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