Aracılığıyla paylaş


TN025: Belge, Görünüm ve Çerçeve Oluşturma

Dekont

Aşağıdaki teknik not, çevrimiçi belgelere ilk kez eklendiğinden beri güncelleştirilmemiştir. Sonuç olarak, bazı yordamlar ve konular güncel olmayabilir veya yanlış olabilir. En son bilgiler için, çevrimiçi belge dizininde ilgilendiğiniz konuyu aramanız önerilir.

Bu not WinApps, DocTemplates, Belgeler, Çerçeveler ve Görünümler için oluşturma ve sahiplik sorunlarını açıklar.

WinApp

Sistemde bir CWinApp nesne var.

Statik olarak oluşturulur ve çerçevenin iç uygulaması WinMaintarafından başlatılır. Yararlı bir şey yapmak için öğesinden CWinApp türetmelisiniz (özel durum: MFC uzantısı DLL'lerinin örneği CWinApp olmamalıdır; bunun yerine başlatma işlemi yapılır DllMain ).

Bir CWinApp nesne, belge şablonlarının (a CPtrList) bir listesine sahip olur. Uygulama başına bir veya daha fazla belge şablonu vardır. DocTemplates genellikle içindeki kaynak dosyasından (bir dize dizisi) CWinApp::InitInstanceyüklenir.

pTemplate = new CDocTemplate(IDR_MYDOCUMENT, ...);

AddDocTemplate(pTemplate);

Tek CWinApp nesne, uygulamadaki tüm çerçeve pencerelerine sahip olur. Uygulamanın ana çerçeve penceresi içinde CWinApp::m_pMainWnddepolanmalıdır; appWizard'ın InitInstance bunu sizin için yapmasına izin vermediyseniz genellikle uygulamada m_pMainWnd ayarlarsınız. Tek belge arabirimi (SDI) için bu, hem ana uygulama çerçevesi penceresi hem de tek belge çerçevesi penceresi olarak hizmet veren bir penceredir CFrameWnd . Birden çok belge arabirimi (MDI) için bu, tüm alt CFrameWndöğeleri içeren ana uygulama çerçevesi penceresi olarak hizmet veren bir MDI Çerçevesidir (sınıfCMDIFrameWnd). Her alt pencere sınıftan CMDIChildWnd (türetilir CFrameWnd) ve olası birçok belge çerçevesi penceresinden biri olarak işlev görür.

DocTemplates

CDocTemplate, belgelerin oluşturucusu ve yöneticisidir. Oluşturduğu belgelerin sahibidir. Uygulamanız aşağıda açıklanan kaynak tabanlı yaklaşımı kullanıyorsa, uygulamasından CDocTemplatetüretmesi gerekmez.

SDI uygulaması için sınıfı CSingleDocTemplate açık bir belgeyi izler. Bir MDI uygulaması için sınıfı CMultiDocTemplate , o şablondan oluşturulan açık durumdaki tüm belgelerin listesini (a CPtrList) tutar. CDocTemplate::AddDocument ve CDocTemplate::RemoveDocument şablondan belge eklemek veya kaldırmak için sanal üye işlevlerini sağlayın. CDocTemplate, korumalı CDocument::m_pDocTemplate geri işaretçisini belgeyi oluşturan belge şablonuna geri dönecek şekilde ayarlayabilmemiz için bir arkadaşıdırCDocument.

CWinApp varsayılan OnFileOpen uygulamayı işler ve böylece tüm belge şablonlarını sorgular. Uygulama, zaten açık olan belgeleri aramayı ve yeni belgelerin hangi biçimde açılıp açılmayacaklarına karar verme işlemini içerir.

CDocTemplate belgeler ve çerçeveler için kullanıcı arabirimi bağlamasını yönetir.

CDocTemplate adsız belge sayısını tutar.

Cdocument

A CDocument , bir CDocTemplateöğesine aittir.

Belgeler, belgeyi (a CPtrList) görüntüleyen açık görünümlerin (türetilmişCView) bir listesine sahiptir.

Belgeler görünümleri oluşturmaz/yok eder, ancak oluşturulduktan sonra birbirlerine eklenir. Belge kapatıldığında (Dosya/Kapat aracılığıyla), tüm ekli görünümler kapatılır. Belgedeki son görünüm kapatıldığında (yani, Pencere/Kapat) belge kapatılır.

CDocument::AddViewarabirimiRemoveView, görünüm listesini korumak için kullanılır. CDocumentgeri işaretçisini CView::m_pDocument ayarlayabilmemiz için bir arkadaşıdırCView.

CFrameWnd

A CFrameWnd (çerçeve olarak da bilinir) MFC 1.0 ile aynı rolü oynar, ancak şimdi CFrameWnd sınıf birçok durumda yeni bir sınıf türetmeden kullanılacak şekilde tasarlanmıştır. Türetilmiş sınıflar CMDIFrameWnd ve CMDIChildWnd ayrıca geliştirilmiştir, bu nedenle birçok standart komut zaten uygulandı.

CFrameWnd, çerçevenin istemci alanında pencere oluşturmakla sorumludur. Normalde çerçevenin istemci alanını dolduran bir ana pencere vardır.

MDI-Frame penceresi için istemci alanı, tüm MDI-Child çerçeve pencerelerinin üst öğesi olan MDICLIENT denetimiyle doldurulur. SDI Çerçeve penceresi veya MDI-Alt çerçeve penceresi için istemci alanı genellikle türetilmiş bir CViewpencere nesnesiyle doldurulur. durumunda CSplitterWnd, görünümün istemci alanı pencere nesnesiyle CSplitterWnd doldurulur ve CViewtüretilmiş pencere nesneleri (bölme başına bir tane) öğesinin CSplitterWndalt pencereleri olarak oluşturulur.

Ayrıca bkz.

Sayıya Göre Teknik Notlar
Kategoriye Göre Teknik Notlar