Aracılığıyla paylaş


MFC İletişim Kutusu Olarak Windows Formu Kullanıcı Denetimi Barındırma

MFC CWinFormsDialog şablon sınıfı sağlayarak kalıcı ya da geçici bir MFC iletişim kutusunda Windows Forms kullanıcı denetimini (UserControl) barındırmanıza imkan tanır.CWinFormsDialog MFC sınıfı CDialog üzerinden türetilmiştir, bu şekilde iletişim kutusu kalıcı veya kısıtlayıcı olmayan olarak başlatılabilir.

CWinFormsDialog öğesinin kullanıcı denetimini barındırmak için kullandığı işlem MFC İletişim Kutusunda Windows Formu Kullanıcı Denetimi Barındırma öğesinde tanımlananla benzerdir.Ancak, CWinFormsDialog kullanıcı denetiminin başlatılmasını ve barındırılmasını yönetir, bu nedenle el ile programlanmak zorunda değildir.

Windows Forms ile mfc kullanılan gösteren bir örnek uygulama için bkz: mfc ve Windows Forms Integration.

MFC konak uygulaması oluşturmak için

  1. Yeni bir MFC Uygulama projesi oluşturun.

    Dosya menüsünde, Yeni'yi seçin ve sonra da Proje'yi tıklatın.Visual C++ klasöründe, MFC Uygulaması'nı seçin.

    İçinde ad kutusuna girin MFC03 ve çözüm ayarını değiştirmek Çözüm Ekle.Click OK.

    MFC Uygulama Sihirbazı'nda, tüm varsayılan ayarları kabul edin ve ardından Son'u tıklatın.Bu bir Çoklu Belge Arabirimiyle beraber bir MFC uygulaması oluşturur.

  2. Projeyi yapılandırın.

    Çözüm Gezgini'nde, MFC03 proje düğümünü sağ tıklatın ve bağlam menüsünden Özellikler'i seçin.Özellik Sayfaları iletişim kutusu görüntülenir.

    Özellik Sayfaları iletişim kutusundaki Yapılandırma Özellikleri ağaç denetiminden, Genel'i seçin, ardından Proje Varsayılanları bölmesinde, Ortak Dil Çalışma Zamanı desteği'ni Ortak Dil Çalışma Zamanı Desteği (/ clr) olarak değiştirin.Tamam düğmesini tıklatın.

  3. .NET denetimine başvuru ekleyin.

    Çözüm Gezgini'nde MFC03 proje düğümünü sağ tıklatın ve Başvurular'ı seçin.Özellik Sayfası'nda Yeni Başvuru Ekle'yi tıklatın, WindowsControlLibrary1'i seçin (Projeler sekmesi altında) ve Tamam'ı tıklatın.Bu programın derleyeceği bir /fu derleyici seçeneğine ilişkin biçimde bir başvuru ekler; ayrıca, programın çalıştıracağı MFC03 proje dizinine, WindowsControlLibrary1.dll öğesini kopyalar.

  4. Mevcut #include deyimlerinin sonundaki stdafx.h'ye #include <afxwinforms.h> kodunu ekleyin.

  5. CDialog'u alt sınıflara ayıran yeni bir sınıf ekleyin.

    Proje adını sağ tıklayın ve CDialog bilgisini alt sınıflara ayıran bir MFC sınıfı (CHostForWinForm adında) ekleyin.İletişim kutusu kaynağına ihtiyacınız olmadığından, kaynak kimliğini silebilirsiniz (Kaynak Görünümü'nü seçin, İletişim Kutusu klasörünü genişletin ve IDD_HOSTFORWINFORM kaynağını silin.Ardından herhangi bir referansı koddaki kimliğe kaldırın.).

  6. CHostForWinForm.h ve CHostForWinForm.cpp dosyalarındaki CDialog öğesini CWinFormsDialog<WindowsControlLibrary1::UserControl1> ile değiştirin.

  7. CHostForWinForm sınıfındaki DoModal öğesini çağırın.

    MFC03.cpp öğesinde #include "HostForWinForm.h" öğesini ekleyin.

    MFC03App::InitInstance öğesinin tanımındaki dönüş deyiminden önce, şunu ekleyin:

    CHostForWinForm m_HostForWinForm;

    m_HostForWinForm.DoModal();

  8. Projeyi olu?turup çaly?tyryn.

    Yapı menüsünde, Çözümü Derle'yi tıklatın.

    Hata Ayıklama menüsünde, Start without debugging'e (Hata ayıklamadan başla) tıklayın.

    Bundan sonra, Windows Forms üzerindeki bir denetimin durumunu MFC uygulamasından izlemek için kod ekleyeceksiniz.

  9. OnInitDialog için bir işleyici ekleyin.

    Özellikler penceresini görüntüleyin (F4).Sınıf Görünümü'nde, CHostForWinForm öğesini seçin.Özellikler penceresinde geçersiz kılmaları seçin ve OnInitDialog satırında, sol taraftaki sütunu tıklatın ve < Ekle >'yi seçin.Bu CHostForWinForm.h öğesine aşağıdaki satırı ekler:

    virtual BOOL OnInitDialog();
    
  10. aşağıdaki şekilde OnInitDialog (in CHostForWinForm.cpp) tanımlayın:

    BOOL CHostForWinForm::OnInitDialog() {
       CWinFormsDialog<WindowsControlLibrary1::UserControl1>::OnInitDialog();
       GetControl()->button1->Click += MAKE_DELEGATE(System::EventHandler, OnButton1);
       return TRUE;
    }
    
  11. Sonra OnButton1 işleyicisini ekleyin.Aşağıdaki satırları CHostForWinForm.h'deki CHostForWinForm sınıfının ortak bölümüne ekleyin:

    virtual void OnButton1( System::Object^ sender, System::EventArgs^ e );
    
    BEGIN_DELEGATE_MAP( CHostForWinForm )
       EVENT_DELEGATE_ENTRY( OnButton1, System::Object^, System::EventArgs^ );
    END_DELEGATE_MAP()
    

    CHostForWinForm.cpp öğesine bu tanımı ekleyin:

    void CHostForWinForm::OnButton1( System::Object^ sender, System::EventArgs^ e ) 
    {
       System::Windows::Forms::MessageBox::Show("test");
    }
    
  12. Projeyi olu?turup çaly?tyryn.Windows Form’daki düğmeyi tıklattığınızda, MFC uygulamasındaki kod çalışacaktır.

    Bundan sonra, Windows Form üzerindeki metin kutusunun değerini MFC kodundan görüntülemek için kod ekleyeceksiniz.

  13. CHostForWinForm.h öğesindeki CHostForWinForm sınıfının ortak bölümüne aşağıdaki bildirimi ekleyin:

    CString m_sEditBoxOnWinForm;
    
  14. CHostForWinForm.cpp öğesindeki DoDataExchange tanımında, aşağıdaki üç satırı işlevin sonuna ekleyin:

    if (pDX->m_bSaveAndValidate)
       m_sEditBoxOnWinForm = CString( GetControl()->textBox1->Text);
    else
       GetControl()->textBox1->Text = gcnew System::String(m_sEditBoxOnWinForm);
    
  15. CHostForWinForm.cpp öğesindeki OnButton1 tanımında, aşağıdaki üç satırı işlevin sonuna ekleyin:

    this->UpdateData(TRUE);
    System::String ^ z = gcnew System::String(m_sEditBoxOnWinForm);
    System::Windows::Forms::MessageBox::Show(z);
    
  16. Projeyi olu?turup çaly?tyryn.

Ayrıca bkz.

Başvuru

System.Windows.Forms.UserControl

Diğer Kaynaklar

MFC içinde Windows Formu Kullanıcı Denetimi Kullanma