次の方法で共有


方法: ネイティブ C++ クラスから Windows フォーム イベントをシンクする

ネイティブ C++ クラスで、Windows フォーム コントロールまたは MFC マクロ マップ形式の他のフォームから発生したマネージ イベントからコールバックを受け取るようにできます。 ビューやダイアログでイベントをシンクすることは、コントロールのイベントをシンクすることに似ています。

そのため、次の操作が必要です。

このサンプルは、「方法: Windows フォームで DDX/DDV データ バインディングを実行する」で行った作業の続きです。

ここでは、MFC コントロール (m_MyControl) を、OnClick という、マネージ Click イベントのマネージ イベント ハンドラー デリゲートに関連付けます。

OnClick イベント ハンドラーをアタッチするには

  1. BOOL CMFC01Dlg::OnInitDialog の実装に次のコードを追加します。

    m_MyControl.GetControl()->button1->Click += MAKE_DELEGATE( System::EventHandler, OnClick );
    
  2. MFC02View.h で、クラスの宣言 CMFC01Dlg : public CDialog のパブリック セクションに次のコードを追加します。

    // 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 );
    
  3. 最後に、OnClick の実装を CMFC01Dlg.cpp に追加します。

    void CMFC01Dlg::OnClick(System::Object^ sender, System::EventArgs^ e)
    {
        AfxMessageBox(_T("Button clicked"));
    }
    

参照

参照

MAKE_DELEGATE

BEGIN_DELEGATE_MAP

END_DELEGATE_MAP

EVENT_DELEGATE_ENTRY