Belge/Görünüm Mimarisinin Alternatifleri
MFC uygulamaları normalde bilgileri, dosya biçimlerini ve verilerin kullanıcılara görsel gösterimini yönetmek için belge/görünüm mimarisini kullanır. Masaüstü uygulamalarının çoğu için belge/görünüm mimarisi uygun ve verimli bir uygulama mimarisidir. Bu mimari, verileri görüntülemeden ayırır ve çoğu durumda uygulamanızı basitleştirir ve yedekli kodu azaltır.
Ancak, belge/görünüm mimarisi bazı durumlar için uygun değildir. Şu örnekleri göz önünde bulundurun:
Windows için C dilinde yazılmış bir uygulamayı kullanıyorsanız, uygulamanıza belge/görünüm desteği eklemeden önce bağlantı noktanızı tamamlamak isteyebilirsiniz.
Basit bir yardımcı program yazıyorsanız, belge/görünüm mimarisi olmadan bunu yapabileceğinizi fark edebilirsiniz.
Özgün kodunuz veri yönetimiyle veri görüntülemeyi zaten karıştırıyorsa, kodu belge/görünüm modeline taşımak zahmete değmez çünkü ikisini ayırmanız gerekir. Kodu olduğu gibi bırakmayı tercih edebilirsiniz.
Belge/görünüm mimarisi kullanmayan bir uygulama oluşturmak için, MFC Uygulama Sihirbazı'nın 1. adımındaki Belge/Görünüm mimarisi desteği onay kutusunu temizleyin. Ayrıntılar için bkz . MFC Uygulama Sihirbazı .
Dekont
MFC Uygulama Sihirbazı tarafından üretilen iletişim kutusu tabanlı uygulamalar belge/görünüm mimarisini kullanmaz, bu nedenle iletişim kutusu uygulama türünü seçerseniz Belge/Görünüm mimarisi desteği onay kutusu devre dışı bırakılır.
Visual C++ sihirbazlarının yanı sıra kaynak ve iletişim kutusu düzenleyicileri, oluşturulan uygulamayla, sihirbaz tarafından oluşturulan diğer tüm uygulamalarda olduğu gibi çalışır. Uygulama araç çubuklarını, kaydırma çubuklarını ve durum çubuğunu destekleyebilir ve Hakkında kutusuna sahiptir. Uygulamanız hiçbir belge şablonunu kaydetmez ve belge sınıfı içermez.
Oluşturulan uygulamanızın öğesinden CWnd
türetilmiş bir görünüm sınıfına CChildView
sahip olduğunu unutmayın. MFC, uygulamanız tarafından oluşturulan çerçeve pencerelerinin içinde görünüm sınıfının bir örneğini oluşturur ve konumlandırılır. MFC, uygulamanın içeriğini konumlandırmayı ve yönetmeyi basitleştirdiğinden, yine de bir görünüm penceresi kullanmayı zorlar. Bu sınıfın üyesine OnPaint
boyama kodu ekleyebilirsiniz. Kodunuz çerçeve yerine görünüme kaydırma çubukları eklemelidir.
MFC tarafından sağlanan belge/görünüm mimarisi bir uygulamanın birçok temel özelliğini uygulamakla sorumlu olduğundan, projenizde olmaması uygulamanızın birçok önemli özelliğini uygulamaktan sorumlu olduğunuz anlamına gelir:
MFC Uygulama Sihirbazı tarafından sağlanan şekilde, uygulamanızın menüsü Dosya menüsünde yalnızca Yeni ve Çıkış komutlarını içerir. (Yeni komut yalnızca MDI uygulamaları için desteklenir, Belge/Görünüm desteği olmayan SDI uygulamaları için desteklenmez.) Oluşturulan menü kaynağı bir MRU (en son kullanılan) listesini desteklemez.
Dosya menüsünde Aç ve Kaydet de dahil olmak üzere uygulamanızın destekleyeceğini tüm komutlar için işleyici işlevleri ve uygulamaları eklemeniz gerekir. MFC normalde bu özellikleri desteklemek için kod sağlar, ancak bu destek belge/görünüm mimarisine sıkı sıkıya bağlıdır.
İstediyseniz, uygulamanızın araç çubuğu en az düzeyde olacaktır.
Sihirbaz doğru MFC mimarisini garanti ettiğinden, belge/görünüm mimarisi olmayan uygulamalar oluşturmak için MFC Uygulama Sihirbazı'nı kullanmanız kesinlikle önerilir. Ancak, sihirbazı kullanmaktan kaçınmanız gerekiyorsa, kodunuzda belge/görünüm mimarisini atlamak için birkaç yaklaşım aşağıdadır:
Belgeyi kullanılmayan bir ekleme olarak değerlendirin ve yukarıda önerilen şekilde görünüm sınıfında veri yönetimi kodunuzu uygulayın. Belgenin yükü nispeten düşüktür. Tek bir CDocument nesnesi, kendi başına küçük miktarda ek yükün yanı sıra 'nin temel sınıfları olan CCmdTarget ve CObject'in küçük ek yüküne neden
CDocument
olur. İkinci sınıfların her ikisi de küçüktür.içinde bildirdi
CDocument
:İki
CString
nesne.Üç BOOL.
Bir
CDocTemplate
işaretçi.CPtrList
Belgenin görünümlerinin listesini içeren bir nesne.
Ayrıca belge, belge nesnesini, görünüm nesnelerini, çerçeve penceresini ve belge şablonu nesnesini oluşturmak için gereken süreyi gerektirir.
Hem belgeyi hem de görünümü kullanılmayan ekler olarak kabul edin. Veri yönetimi ve çizim kodunuzu görünüm yerine çerçeve penceresine yerleştirin. Bu yaklaşım, C dili programlama modeline daha yakındır.
MFC çerçevesinin belgeyi ve görünümü oluşturan bölümlerini geçersiz kılarak bunların oluşturulmasını tamamen ortadan kaldırın. Belge oluşturma işlemi çağrısıyla
CWinApp::AddDocTemplate
başlar. Bu çağrıyı uygulama sınıfınızınInitInstance
üye işlevinden kaldırın ve bunun yerine kendi içindeInitInstance
bir çerçeve penceresi oluşturun. Veri yönetimi kodunuzu çerçeve penceresi sınıfınıza yerleştirin. Belge/görünüm oluşturma işlemi Belge/Görünüm Oluşturma bölümünde gösterilmiştir. Bu daha fazla iştir ve çerçevenin daha derin bir şekilde anlaşılmasını gerektirir, ancak belge/görünüm ek yükünden tamamen kurtulabilirsiniz.
MFC: Belgeler ve Görünümler Olmadan Veritabanı Sınıflarını Kullanma makalesi, veritabanı uygulamaları bağlamında belge/görünüm alternatiflerine daha somut örnekler verir.