次の方法で共有


MFC ActiveX コントロール : ActiveX コントロールの配布

この技術情報では、の問題を ActiveX コントロールの再配布について説明します:複数

  • ANSI 形式または Unicode バージョン コントロール

  • ActiveX コントロールおよび再頒布可能パッケージの DLL のインストール

  • コントロールの登録

    [!メモ]

    ActiveX コントロールの再配布の詳細については、 コントロールの再配布を参照してください。

ANSI 形式または Unicode バージョン コントロール

かどうかをコントロールの ANSI 形式または Unicode バージョン、または両方を提供するかを決定します。このデシジョンは ANSI バージョンと Unicode 文字セットで移植性固有の要因に基づいています。

すべての Win32 オペレーティング システムで実行する ANSI のコントロール、さまざまな Win32 オペレーティング システムの間の最大移植性を使用する。Unicode のコントロールは、 Windows NT のみ (バージョン 3.51 以降)で、 Windows 95 や Windows 98 で実行します。移植性が最大の注意事項、 ANSI のコントロールを提供します。コントロールに Windows NT でのみ実行すると、 Unicode のコントロールを提供できます。これらを提供し、アプリケーションをユーザーのオペレーティング システムに最適なバージョンをインストールしていることを選択できます。

ActiveX コントロールおよび再頒布可能パッケージの DLL のインストール

、 ActiveX コントロールを与えるセットアップ プログラムは、 Windows ディレクトリの特別なサブディレクトリを作成し、コントロールの .OCX ファイルをインストールする必要があります。

[!メモ]

Windows ディレクトリの名前を取得するには、セットアップ プログラムで Windows の GetWindowsDirectory API を使用します。会社または製品名からサブディレクトリの名前を取得することもできます。

セットアップ プログラムは、 Windows のシステム ディレクトリに必要な再頒布 DLL ファイルをインストールする必要があります。DLL のいずれかはユーザーのコンピューターにある場合、セットアップ プログラムは、をインストールするのバージョンを比較します。バージョン番号が既にインストールされているファイルよりも高い場合にだけファイルを再インストールします。

ActiveX コントロールが OLE コンテナー アプリケーションでのみ使用されるため、コントロールとの OLE DLL のフル セットを配布する必要はありません。含むアプリケーション (またはオペレーティング システム自体は)がインストールされている標準 OLE DLL があると仮定できます。

コントロールの登録

コントロールを使用する前に適切なエントリは Windows 登録データベースにそれに作成する必要があります。ある ActiveX コントロール コンテナーは登録の新しいコントロールには、ユーザーにメニュー項目が提供されます、この機能はすべてのコンテナーで使用できない場合があります。従ってインストールされている場合、セットアップ プログラムにコントロールを登録する必要があります。

必要に応じて、代わりにコントロールを直接登録するセットアップ プログラムを作成できます。

コントロールの DLL を読み込むために LoadLibrary Windows API を使用します。次に、 「」 DllRegisterServer の関数のアドレスを取得使用 GetProcAddress 。最後に、 DllRegisterServer 関数を呼び出しますします。次のコード例は hLib がコントロール ライブラリ ハンドルを保存すると、 lpDllEntryPointストアを 「」 DllRegisterServer 関数のアドレス示します。は 1 とおりのメソッド。

HINSTANCE hLib = LoadLibrary(pszDllName);

if (hLib < (HINSTANCE)HINSTANCE_ERROR)
{
   AfxMessageBox(IDS_LOADLIBFAILED); //unable to load DLL
   iReturn = FAIL_LOAD;              //unable to load DLL
}

// Find the entry point.
lpDllEntryPoint = GetProcAddress(hLib, "DllRegisterServer");
if (lpDllEntryPoint != NULL)
   (*lpDllEntryPoint)();
else
   ;// Unable to locate entry point

コントロールを登録する長所は直接インストール時を減らす別のプロセス (つまり、 REGSVR32 を呼び出し、読み込む必要がないことです。また、登録プロセスが内部であるため、セットアップ プログラムは外部プロセスができるエラーになると予測できない状況に処理できます。

[!メモ]

セットアップ プログラムは、 ActiveX コントロールをインストールする前に、 OleInitializeをダイヤルする必要があります。セットアップ プログラムが終了すると、 OleUnitializeをダイヤルします。これは、 OLE システム DLL が ActiveX コントロールを登録するために適切な状態であることを確認します。

MFCx0.DLL を登録する必要があります。

参照

概念

MFC ActiveX コントロール