次の方法で共有


ActiveX コントロール コンテナー : ダイアログ ベースではないコンテナーでのコントロールの使用

あるアプリケーションでは、 SDI または MDI アプリケーションなど、アプリケーションのウィンドウ コントロールを埋め込む必要があります。Visual C++ によって挿入されるラッパー クラスの 生成(&&C),create,作成,生成 のメンバー関数はダイアログ ボックスに必要なしにコントロールのインスタンスを動的に作成できます。

生成(&&C),create,作成,生成 のメンバー関数は、次のパラメーターがあります:

  • lpszWindowName
    コントロールのテキストまたはキャプション プロパティに表示するテキストへのポインター (存在する場合)。

  • dwStyle
    ウィンドウ スタイル。完全な一覧については、 CWnd::CreateControlを参照してください。

  • rect
    コントロールのサイズと位置を指定します。

  • pParentWnd
    コントロールの親ウィンドウ、通常 CDialogを指定します。これは NULLである必要があります。

  • nID
    コントロールの ID を指定し、コンテナーによってコントロールを参照するために使用できます。

動的に ActiveX コントロールを作成するには、この関数を 1 回使用例は、 SDI アプリケーションのフォーム ビューにあります。アプリケーションの WM_CREATE ハンドラーで、コントロールのインスタンスを作成できます。

この例では、 CMyView は、メイン ビュー クラスです CCirc はラッパー クラスです CIRC.H は、ヘッダー (です。H)ラッパー クラス ファイル。

この機能を実行するには、 4 段階のプロセスです。

非ダイアログのペインで動的に ActiveX コントロールを作成するには

  1. CMyView のクラス定義の直前の CMYVIEW.H で CIRC.H を挿入する:

    #include "circ.h"
    
  2. CMYVIEW.H にある CMyView のクラス定義の保護されたセクションにメンバー変数 (型 CCirc)を追加します:

    class CMyView : public CView
    {
    
    
    ...
    
    
    protected:
       CCirc m_myCtl;
    public:
       afx_msg void OnViewCircdlg();
    };
    
  3. CMyViewを分類するために WM_CREATE のメッセージ ハンドラーを追加します。

  4. ハンドラー関数では、 CMyView::OnCreateは親ウィンドウとして this のポインターを使用してコントロールの Create の関数に、呼び出しを行い:

    int CMyView::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
       if (CView::OnCreate(lpCreateStruct) == -1)
          return -1;
    
       m_myCtl.Create(NULL, WS_VISIBLE, CRect(50,50,100,100), this, 0);
       m_myCtl.SetCaption(_T("Control created"));
    
       return 0;
    }
    
  5. プロジェクトを再ビルドします。Circ のコントロールはアプリケーションのビューが作成されるたびに動的に作成されます。

参照

概念

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