Tek bir belge arabirim (SDI) ve Çoklu Belge arabirim (MDI) uygulamaları CFormView sınıfında nasıl kullanılır?

Makale çevirileri Makale çevirileri
Makale numarası: 98598 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Not Microsoft Visual C++ .NET (2002), Microsoft .NET Framework tarafından sağlanan bir yönetilen kod model hem de yerel Microsoft Windows kod modeli yönetilmeyen destekler. Bu makaledeki bilgiler yalnızca yönetilmeyen Visual C++ kod uygulanır.

Not Microsoft Visual C++ 2005, Microsoft .NET Framework tarafından sağlanan bir yönetilen kod model hem de yerel Microsoft Windows kod modeli yönetilmeyen destekler.

Özet

CFormView sınıfı, bir iletişim kutusu şablona dayalı bir görünüm içinde denetimler yerleştirmek için uygun bir yöntem sağlar. Bir CFormView kullanmak için genel yordamı sınıfı belgelerinde açıklanan ve Microsoft Foundation Classes (MFC) sürüm 2.x ve yukarıda sağlanan VIEWEX ve CHKBOOK örnek uygulamalar gösterilmektedir. Ancak, bu uygulamaları başlangıç formunun başlangıç boyutu ile aynı çerçeve penceresi boyutunu yapma gösteren değil.

Aşağıdaki bölüm, bir tek belge arabirim (SDI) veya formun içine ilk çerçeve penceresi boyutlandırma çerçevesinin stilini değiştirdiğinizde ve formdaki bir düğmeyi kullanarak bir MDI belgeyi kapatmadan CFormView temel alan birden çok belge arabirim (MDI) uygulama oluşturma'yı desteklemek için gereken adımları listeler.

Daha fazla bilgi

Aşağıdaki adımlar, bir MFC AppWizard nasıl oluşturulacağını açıklar CFormView varsayılan görünüm olarak kullanarak uygulama:
  1. AppWizard SDI veya MDI bir uygulama oluşturmak için kullanın. Projenizin kaynak dosyası için ayarlı doğru stilli bir <a0>iletişim</a0> kutusunda şablonu ekler.

    Visual Studio 6.0:

    Adımda AppWizard, 6, görünümü sınıfı seçin. Base sınıfı birleşik giriş kutusunda CFormViewCFormView temel sınıf olarak belirtmek için seçin.

    Visual Studio .NET veya Visual Studio 2005:

    AppWizard, 1. adımda, Üretilen sınıf seçin. Base sınıfı birleşik giriş kutusunda CFormViewCFormView temel sınıf olarak belirtmek için seçin.
  2. OnUpdate() üye işlevi geçersiz kılmak ve üye değişkeni geçerli belge verilerle güncelleştirmek ve iletişim veri gerçekleştirmek için CFormView belgelerinde belirtildiği gibi UpdateData() arayın (DDX) exchange.

    Not: UpdateData sanal değil ve temel sınıf'ı çağırmak, DoDataExchange standart çok biçimlilik ile adlandırılır türetilmiş bir sınıf sağlar. Aramak için <a0></a0>, CFormView belgelerine durumları UpdateData geçersiz kılamaz.
  3. Form görünümünde başlangıç boyutunu ayarlamak istiyorsanız, OnInitialUpdate() işlevi geçersiz kılar. Aşağıdaki metin, bu adımı SDI veya MDI uygulamada biraz farklıdır) hakkında ek bilgi sağlar.

Bir SDI ana çerçevesinin etrafında bir CFormView boyutunu değiştirme

Uygulama Studio'da tasarlanmış form için uygun bir boyut (kullanan CFormView, görünümü sınıf olarak) SDI uygulamasının ana çerçeve boyutunu değiştirmek için <a0></a0>, CFormView, aşağıdaki gibi türetilen sınıfınızın OnInitialUpdate() işlevinde geçersiz kıl:
      void CMyFormView::OnInitialUpdate()
      {
         CFormView::OnInitialUpdate();
         GetParentFrame()->RecalcLayout();
         ResizeParentToFit(); // default argument is TRUE
      }
				
The ResizeParentToFit() işlevi formu kullanıcı uygulama ana çerçeve boyutu değiştiğinde boyutunu değiştirmelerini engellemez (kaydırma çubuklarının otomatik olarak gerekirse eklenir). Üst form görünümünün olan çerçeve penceresi stilini değiştirmek için <a0></a0>, AppWizard tarafından oluşturulan CMainFrame sınıfı PreCreateWindow() işlevinde geçersiz kılar. Örneğin, WS_THICKFRAME stilini kaldırmak ve kullanıcı, pencere boyutunu değiştirmelerini önlemek için içinde MAINFRM.H PreCreateWindow() bildirmek ve MAINFRM.CPP için aşağıdaki kodu ekleyin:
      BOOL CMainFrame::PreCreateWindow(CREATESTRUCT &cs)
      {
         cs.style &= ~WS_THICKFRAME;
         return CFrameWnd::PreCreateWindow(cs);
      }
				

Bir MDI alt çerçevesinin etrafında bir CFormView boyutunu değiştirme

Bir MDI alt çerçevesinin boyutunu değiştirme işlemi yukarıda açıklandığı gibi SDI uygulamanın ana çerçeve boyutunu değiştirmek için benzer. Ancak, RecalcLayout() çağrı gerekli değildir.

Bir form görünümü geçici bir MDI alt çerçeve boyutunu değiştirmek için <a0></a0>, CFormView gibi türetilen sınıfınızın OnInitialUpdate() işlevinde geçersiz kıl:
      void CMDIFormView::OnInitialUpdate()
      {
         CFormView::OnInitialUpdate();
         ResizeParentToFit(); // Default argument is TRUE.
      }
				
uygulama ResizeParentToFit() işlevi varsayılan bağımsız değişkeni geçersiz kılar, temelde aynı sonuçları SDI uygulama için yukarıda açıklandığı gibi oluşur. Buna ek olarak, alt pencere ekranın tamamını veya kapsayan MDI ana çerçeve için çok büyük olabilir.

(Örneğin, kullanıcı penceresinin boyutunu değiştiremezsiniz; böylece WS_THICKFRAME stilini kaldırmak için) bir MDI alt çerçevesinin stilini değiştirmek için <a0></a0>, bir MDI alt pencere sınıfı ve yukarıdaki SDI örnekte gösterildiği gibi PreCreateWindow işlevi geçersiz.

Bir düğme ile bir MDI formu kapatılıyor

Belge kapatan bir formdaki bir düğmeyi oluşturmak için CFormView sınıfına BN_CLICKED iletisinin bir ileti işleyicisi ekleyin. Düğmeleri CFormView içinde varsayılan IDOK veya IDCANCEL tanımlayıcıları olduğundan emin olun. Bunu ileti eşleme ve düğmeler için yanlış işlevleri hatalı girdileri oluşturulur.

Ileti işleyicisi yerinde olduğunda, dosya Kapat komutunu benzetimi menü yerine aşağıdaki kodu:
      void CMyForm::OnClickedButton1()
      {
         PostMessage(WM_COMMAND, ID_FILE_CLOSE);
      }
				
formu kapatmak için bu yöntem, belgeyle ilişkili IsModified() üye işlevi DOĞRU verir, dosyayı kaydetmek için kullanıcıdan istemde bulunur.

Özellikler

Makale numarası: 98598 - Last Review: 5 Ocak 2006 Perşembe - Gözden geçirme: 4.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Foundation Class Library 4.2, Ne zaman ne ile kullanilir:
    • Microsoft Visual C++ 1.0 Professional Edition
    • Microsoft Visual C++ 1.5 Professional Edition
    • Microsoft Visual C++ 1.51
    • Microsoft Visual C++ 1.52 Professional Edition
    • Microsoft Visual C++ 1.0 Professional Edition
    • Microsoft Visual C++ 2.0 Professional Edition
    • Microsoft Visual C++ 2.1
    • Microsoft Visual C++ 5.0 Standard Edition
    • Microsoft Visual C++ 6.0 Service Pack 5
    • Microsoft Visual C++ .NET 2003 Standard Edition
    • Microsoft Visual C++ .NET 2002 Standard Edition
    • Microsoft Visual C++ 2005 Express Edition
Anahtar Kelimeler: 
kbmt kbdocview kbhowto kbmdi kbuidesign KB98598 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:98598

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com