方法 : ActiveX コントロールをダイアログ リソースでホストする
更新 : 2007 年 11 月
Visual Studio を使用して、デバイス用の ActiveX コントロールをデザインする場合、いくつかの追加の手順が発生します。リソース エディタは、デザイン時の編集対象となるコントロールが、それを操作するためのデスクトップ コンピュータに登録されることを前提として設計されています。しかし、デバイス用のコントロールをデスクトップ コンピュータに登録することはできません。次の手順は、デザイン時にそれに代わる手段を提供します。次の手順は、ActiveX コントロール プロジェクトとホスト プロジェクトが既に存在すること、および ActiveX コントロールがダイアログ ボックスでホストされていることを前提としています。
メモ : |
---|
お使いのマシンで、Visual Studio ユーザー インターフェイスの一部の要素の名前や場所が、次の手順とは異なる場合があります。これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。詳細については、「Visual Studio の設定」を参照してください。 |
ダイアログ エディタを使用して ActiveX コントロールを追加するには
ダイアログ エディタで、ホスト プロジェクトのダイアログ ボックスを開きます。
ツールボックスから、ダイアログ ボックスにカスタム コントロールをドラッグします。
ActiveX コントロールをどのように表示するかを考慮しながら、ダイアログ ボックスにカスタム コントロールを配置し、サイズを調整します。
カスタム コントロールを右クリックし、[プロパティ] をクリックします。
[クラス] プロパティに、ActiveX コントロールの GUID を貼り付けます。中かっこ ({…}) を含めて入力してください。
ソリューション エクスプローラで、Project Name.RC2 ファイルを右クリックし、[コードの表示] をクリックします。
[手動で編集されたりソースをここに追加します] セクションに、次のコードを追加します。カスタム コントロールを正しく表示するためには、DLGINIT セクションが必要です。実際の DLGINIT セクションの内容は使用されません。<project name> の部分は、該当するプロジェクトの名前に置き換えます。
IDD_<project name>_DIALOG DLGINIT BEGIN IDC_CUSTOM1, 0x376, 22, 0 0x0000, 0x0000, 0x0800, 0x0000, 0x094d, 0x0000, 0x043d, 0x0000, 0x0013, 0xcdcd, 0xcdcd, 0
ホスト プロジェクトをビルドして実行します。ActiveX コントロールを対象のデバイスに配置して登録します。
別の方法で ActiveX コントロールをホストするには
アプリケーション内で AtlAxWinInit を呼び出して、AtlAxWin80 ウィンドウ クラスを登録します。
ATL アプリケーションでは、この処理がモジュールの初期化コードで実行されます。Win32 アプリケーションの場合、この関数を WinMain 関数で呼び出す必要があります。MFC アプリケーションの場合は、次の手順に従ってください。
ソリューション エクスプローラでプロジェクト ノードを右クリックし、[追加] をポイントし、[クラス] をクリックします。
[スマート デバイス] の [MFC に ATL サポートを追加] をクリックします。
ホスト アプリケーション クラスの InitInstance メソッドの先頭に、AtlAxWinInit 呼び出しを追加します。
ダイアログ リソース (ATL ダイアログ、複合コントロール、MFC ダイアログなど) で、次の作業を行います。
ツールボックスからカスタム コントロールをドラッグします。
ウィンドウ クラス プロパティを AtlAxWin80 に設定します。
キャプションには、中かっこで囲んだ GUID または progID を設定します。
MFC の場合は、リンク入力として別途 atl.lib を追加します。
MFC の場合は、[配置] の [追加ファイル] オプションに次の行を追加します。ダイナミック リンク ライブラリの場合は、これらの行があらかじめ存在しますが、MFC のスタティック リンク ライブラリの場合は、別途追加する必要があります。
msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\$(ProjectName)|0 atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\$(ProjectName)|0 msvcr80d.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\$(ProjectName)|0