方法 : ネイティブ C++ クラスから Windows フォーム イベントをシンクする
更新 : 2007 年 11 月
ネイティブ C++ クラスで、Windows フォーム コントロールまたは MFC マクロ マップ形式の他のフォームから発生したマネージ イベントからコールバックを受け取るようにできます。ビューやダイアログでイベントをシンクすることは、コントロールのイベントをシンクすることに似ています。
そのため、次の操作が必要です。
MAKE_DELEGATE を使用して、OnClick イベント ハンドラをコントロールに追加します。
BEGIN_DELEGATE_MAP、END_DELEGATE_MAP、および EVENT_DELEGATE_ENTRY を使用して、デリゲート マップを作成します。
使用例
このサンプルは、「方法 : Windows フォームで DDX/DDV データ バインディングを実行する」で行った作業の続きです。
ここでは、MFC コントロール (m_MyControl) を、OnClick という、マネージ Click イベントのマネージ イベント ハンドラ デリゲートに関連付けます。
BOOL CMFC01Dlg::OnInitDialog の実装に最初のコード行を追加します。
CMFC01Dlg : public CDialog クラスの宣言内のパブリック セクションに、デリゲート マップと OnClick の定義を追加します。
m_MyControl.GetControl()->button1->Click += MAKE_DELEGATE( System::EventHandler, OnClick );
// delegate map
BEGIN_DELEGATE_MAP( CMFC01Dlg )
EVENT_DELEGATE_ENTRY( OnClick, System::Object^, System::EventArgs^ )
END_DELEGATE_MAP()
void OnClick( System::Object^ sender, System::EventArgs^ e ) {}