次の方法で共有


ActiveX コントロール コンテナー : ActiveX コントロール コンテナーでの ActiveX コントロールのプログラミング

この技術情報では、 ActiveX コントロールの公開された メソッドプロパティ にアクセスするプロセスについて説明します。基本的に、これらの手順に従う場合:

  1. ギャラリーを使用してActiveX コンテナーのプロジェクトに ActiveX コントロールを挿入します。

  2. メンバー変数を定義します。 (または同じのアクセスの他のフォーム) ActiveX コントロールのラッパー クラスとして入力します。

  3. ラッパー クラスの定義済みメンバー関数を使用してActiveX コントロールをプログラミングします。 。

このついては、 ActiveX コントロール サポートとダイアログ ベースのプロジェクト (Container とも呼ばれます)を作成したとします。Circ のサンプル コントロール、 Circ は、プロジェクトに追加されます。

Circ のコントロールがプロジェクトに挿入されます (手順 1)は、アプリケーションのメイン ダイアログ ボックスに、 Circ のコントロールのインスタンスを挿入します。

プロシージャ

Circ のコントロールをダイアログ テンプレートに追加するには

  1. ActiveX コントロール コンテナーのプロジェクトを読み込んでください。この例では、 Container プロジェクトを使用します。

  2. [リソース ビュー] タブをクリックします。

  3. ダイアログ フォルダーを開きます。

  4. メイン ダイアログ ボックス テンプレートをダブルクリック。この例では、 IDD_CONTAINER_DIALOGを使用します。

  5. ツールボックスに Circ のコントロール アイコンをクリックします。

  6. Circ のコントロールを挿入するには、ダイアログ ボックス内のスポットをクリックします。

  7. ファイル のメニューからダイアログ ボックス テンプレートへのすべての変更を保存するに すべてを保存,すべて保存 を選択します。

プロジェクトへの変更

Circ のコントロールにアクセスするコンテナー アプリケーションを有効にするには、 Visual C++ はコンテナーのプロジェクトとラッパー クラスのヘッダーに自動的にラッパー クラス (CCirc)の実装ファイル (.cpp)を追加します。H)ダイアログ ボックス ヘッダー ファイルへのファイル:

#include "circ.h"

ラッパー クラス (ヘッダー。H)コンテナーに存在するファイル

取得するには、 Circ コントロールのプロパティの設定 (メソッドを呼び出すため)、 CCirc のラッパー クラス公開されているすべてのメソッドおよびプロパティ宣言を提供します。例では、これらの宣言は CIRC.H. にあります。次のサンプルは、 ActiveX コントロールの公開されたインターフェイスを定義するクラス CCirc の部分です:

class CCirc : public CWnd
{


...


// Functions
//

   void AboutBox()
   {
      InvokeHelper(DISPID_ABOUTBOX, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
   }

// Properties
//

   unsigned long GetBackColor()
   {
      unsigned long result;
      GetProperty(DISPID_BACKCOLOR, VT_UI4, (void*)&result);
      return result;
   }
   void SetBackColor(unsigned long propVal)
   {
      SetProperty(DISPID_BACKCOLOR, VT_UI4, propVal);
   }
   signed char GetCircleShape()
   {
      signed char result;
      GetProperty(0x1, VT_I1, (void*)&result);
      return result;
   }
   void SetCircleShape(signed char propVal)
   {
      SetProperty(0x1, VT_I1, propVal);
   }
   short GetCircleOffset()
   {
      short result;
      GetProperty(0x3, VT_I2, (void*)&result);
      return result;
   }
   void SetCircleOffset(short propVal)
   {
      SetProperty(0x3, VT_I2, propVal);
   }
   CString GetCaption()
   {
      CString result;
      GetProperty(DISPID_CAPTION, VT_BSTR, (void*)&result);
      return result;
   }
   void SetCaption(CString propVal)
   {
      SetProperty(DISPID_CAPTION, VT_BSTR, propVal);
   }
   COleFont GetFont()
   {
      LPDISPATCH result;
      GetProperty(DISPID_FONT, VT_DISPATCH, (void*)&result);
      return COleFont(result);
   }
   void SetFont(LPDISPATCH propVal)
   {
      SetProperty(DISPID_FONT, VT_DISPATCH, propVal);
   }
   unsigned long GetForeColor()
   {
      unsigned long result;
      GetProperty(DISPID_FORECOLOR, VT_UI4, (void*)&result);
      return result;
   }
   void SetForeColor(unsigned long propVal)
   {
      SetProperty(DISPID_FORECOLOR, VT_UI4, propVal);
   }
   CString GetNote()
   {
      CString result;
      GetProperty(0x4, VT_BSTR, (void*)&result);
      return result;
   }
   void SetNote(CString propVal)
   {
      SetProperty(0x4, VT_BSTR, propVal);
   }
   unsigned long GetFlashColor()
   {
      unsigned long result;
      GetProperty(0x2, VT_UI4, (void*)&result);
      return result;
   }
   void SetFlashColor(unsigned long propVal)
   {
      SetProperty(0x2, VT_UI4, propVal);
   }
};

これらの関数は、通常の C++ 構文を使用してアプリケーションの他のプロシージャから呼び出すことができます。コントロールのメソッドとプロパティにアクセスするには、このメンバー関数の使用の詳細に ActiveX コントロールのプログラミングセクションを参照してください。

プロジェクトに対するメンバー変数の変更

ActiveX コントロールがプロジェクトに追加され、ダイアログ ボックスのコンテナーに埋め込まれている場合、プロジェクトの他の一部アクセスできます。コントロールにアクセスする最も簡単な方法は、ダイアログ クラスの メンバー変数を作成します。 、 CContainerDlg (Visual C++ でプロジェクトに追加されるラッパー クラスの型と同じ手順 2)にあります。次に、埋め込みコントロールにいつでもアクセスするためにメンバー変数を使用できます。

Add Member Variable のダイアログ ボックスは、プロジェクトに m_circctl のメンバー変数を追加する場合は、ヘッダー ファイルに次の行を追加します。 CContainerDlg のクラスの H):

class CContainerDlg : public CDialog
{
   DECLARE_DYNAMIC(CContainerDlg)

public:
   CContainerDlg(CWnd* pParent = NULL);   // standard constructor
   virtual ~CContainerDlg();

   virtual void OnFinalRelease();

// Dialog Data
   enum { IDD = IDD_CONTAINER_DIALOG };

protected:
   virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

   DECLARE_MESSAGE_MAP()
   DECLARE_DISPATCH_MAP()
   DECLARE_INTERFACE_MAP()
public:
   CCirc m_circctl;


...


};

また、 DDX_Control への呼び出しは DoDataExchangeの entity_CODECContainerDlg の実装に自動的に追加されます:

DDX_Control(pDX, IDC_CIRCCTRL1, m_circctl);

ActiveX コントロールのプログラミング

この時点で、ダイアログ テンプレートに ActiveX コントロールを挿入し、このコントロールのメンバー変数を作成します。これで、埋め込みコントロールのプロパティとメソッドにアクセスするには、共通 C++ の構文を使用できます。

注意する ( ラッパー クラス (ヘッダー。H)コンテナーに存在するファイル)、ヘッダー ファイル。 CCirc のラッパー クラスの H)、この場合 CIRC.H は、公開されたプロパティ値を取得および設定するために使用できるメンバー関数の一覧を示します。公開されるメソッドのメンバー関数も使用できます。

コントロールのプロパティを変更する共通の場所は、メイン ダイアログ クラスの OnInitDialog のメンバー関数にあります。この関数は、いずれかのコントロールを含むダイアログ ボックスが表示され、内容を初期化するために使用される直前に呼び出されます。

次のコード例は、 Circ の埋め込みコントロールのキャプションと CircleShape のプロパティを変更するために m_circctl のメンバー変数が使用されます:

BOOL CContainerDlg::OnInitDialog()
{
   CDialog::OnInitDialog();

   m_circctl.SetCaption(_T("Circ 2 Control"));
   if(!m_circctl.GetCircleShape())
      m_circctl.SetCircleShape(TRUE);

   return TRUE;  // return TRUE unless you set the focus to a control
}

参照

概念

ActiveX コントロール コンテナー