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 コントロールを作成するには
CMyView のクラス定義の直前の CMYVIEW.H で CIRC.H を挿入する:
#include "circ.h"
CMYVIEW.H にある CMyView のクラス定義の保護されたセクションにメンバー変数 (型 CCirc)を追加します:
class CMyView : public CView { ... protected: CCirc m_myCtl; public: afx_msg void OnViewCircdlg(); };
CMyViewを分類するために WM_CREATE のメッセージ ハンドラーを追加します。
ハンドラー関数では、 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; }
プロジェクトを再ビルドします。Circ のコントロールはアプリケーションのビューが作成されるたびに動的に作成されます。