Aracılığıyla paylaş


CMultiDocTemplate Sınıfı

Birden çok belge arabirimini (MDI) uygulayan bir belge şablonu tanımlar.

Sözdizimi

class CMultiDocTemplate : public CDocTemplate

Üyeler

Bu sınıfın üye işlevleri sanaldır. Belgeler için bkz . CDocTemplate ve CCmdTarget .

Ortak Oluşturucular

Veri Akışı Adı Açıklama
CMultiDocTemplate::CMultiDocTemplate Bir CMultiDocTemplate nesne oluşturur.

Açıklamalar

MDI uygulaması, ana çerçeve penceresini kullanıcının sıfır veya daha fazla belge çerçevesi penceresi açabildiği ve her biri belgeyi görüntüleyen bir çalışma alanı olarak kullanır. MDI'nin daha ayrıntılı bir açıklaması için bkz . Yazılım Tasarımı için Windows Arabirimi Yönergeleri.

Belge şablonu üç sınıf türü arasındaki ilişkileri tanımlar:

  • CDocument'dan türetdiğiniz bir belge sınıfı.

  • Yukarıda listelenen belge sınıfından verileri görüntüleyen bir görünüm sınıfı. Bu sınıfı CView, CScrollView, CFormViewveya CEditViewöğesinden türetebilirsiniz. (Doğrudan da kullanabilirsiniz CEditView .)

  • Görünümü içeren bir çerçeve penceresi sınıfı. MDI belge şablonu için, bu sınıfı öğesinden CMDIChildWndtüretebilirsiniz veya belge çerçevesi pencerelerinin davranışını özelleştirmeniz gerekmiyorsa, kendi sınıfınızı türetmeden doğrudan CMDIChildWnd kullanabilirsiniz.

MDI uygulaması birden fazla belge türünü destekleyebilir ve farklı türlerdeki belgeler aynı anda açılabilir. Uygulamanızın desteklediği her belge türü için bir belge şablonu vardır. Örneğin, MDI uygulamanız hem elektronik tabloları hem de metin belgelerini destekliyorsa, uygulamanın iki CMultiDocTemplate nesnesi vardır.

Kullanıcı yeni bir belge oluşturduğunda uygulama belge şablonlarını kullanır. Uygulama birden fazla belge türünü destekliyorsa, çerçeve desteklenen belge türlerinin adlarını belge şablonlarından alır ve bunları Dosya Yeni iletişim kutusunda bir listede görüntüler. Kullanıcı bir belge türü seçtikten sonra, uygulama bir belge sınıfı nesnesi, çerçeve penceresi nesnesi ve bir görünüm nesnesi oluşturur ve bunları birbirine ekler.

Oluşturucu dışında öğesinin CMultiDocTemplate üye işlevlerini çağırmanız gerekmez. Çerçeve nesneleri dahili olarak işler CMultiDocTemplate .

hakkında CMultiDocTemplatedaha fazla bilgi için bkz . Belge Şablonları ve Belge/Görünüm Oluşturma İşlemi.

Devralma Hiyerarşisi

CObject

CCmdTarget

CDocTemplate

CMultiDocTemplate

Gereksinimler

Üst bilgi: afxwin.h

CMultiDocTemplate::CMultiDocTemplate

Bir CMultiDocTemplate nesne oluşturur.

CMultiDocTemplate(
    UINT nIDResource,
    CRuntimeClass* pDocClass,
    CRuntimeClass* pFrameClass,
    CRuntimeClass* pViewClass);

Parametreler

nIDResource
Belge türüyle kullanılan kaynakların kimliğini belirtir. Bu menü, simge, hızlandırıcı tablosu ve dize kaynaklarını içerebilir.

Dize kaynağı, '\n' karakteriyle ayrılmış en fazla yedi alt dizeden oluşur (alt dize eklenmiyorsa yer tutucu olarak '\n' karakteri gereklidir; ancak sondaki '\n' karakterleri gerekli değildir); bu alt dizeler belge türünü açıklar. Alt dizeler hakkında bilgi için bkz . CDocTemplate::GetDocString. Bu dize kaynağı, uygulamanın kaynak dosyasında bulunur. Örneğin:

// MYCALC.RC
STRINGTABLE PRELOAD DISCARDABLE
BEGIN
  IDR_SHEETTYPE "\nSheet\nWorksheet\nWorksheets (*.myc)\n.myc\n MyCalcSheet\nMyCalc Worksheet"
END

İlk alt dize MDI uygulamaları için kullanılmadığından ve bu nedenle dahil olmadığından dize '\n' karakteriyle başlar. Dize düzenleyicisini kullanarak bu dizeyi düzenleyebilirsiniz; dizenin tamamı, Dize Düzenleyicisi'nde yedi ayrı girdi olarak değil, tek bir girdi olarak görünür.

Bu kaynak türleri hakkında daha fazla bilgi için bkz . Kaynak Düzenleyicileri.

pDocClass
CRuntimeClass Belge sınıfının nesnesine işaret edin. Bu sınıf, belgelerinizi temsil etmek için tanımladığınız türetilmiş bir CDocumentsınıftır.

pFrameClass
CRuntimeClass Çerçeve penceresi sınıfının nesnesini gösterir. Bu sınıf- türetilmiş bir CMDIChildWndsınıf veya belge çerçeve pencereleriniz için varsayılan davranış istiyorsanız kendisi olabilir CMDIChildWnd .

pViewClass
CRuntimeClass Görünüm sınıfının nesnesini gösterir. Bu sınıf, belgelerinizi görüntülemek için tanımladığınız türetilmiş bir CViewsınıftır.

Açıklamalar

Uygulamanızın desteklediği her belge türü için dinamik olarak bir CMultiDocTemplate nesne ayırın ve her birini CWinApp::AddDocTemplate uygulama sınıfınızın üye işlevinden InitInstance geçirin.

Örnek

// Code fragment from CMyApp::InitInstance

// Establish all of the document types
// supported by the application

AddDocTemplate(new CMultiDocTemplate(IDR_BRUSHDOCTYPE,
   RUNTIME_CLASS(CBrushDoc),
   RUNTIME_CLASS(CChildFrame),
   RUNTIME_CLASS(CBrushView)));

AddDocTemplate(new CMultiDocTemplate(IDR_DCDOCTYPE,
   RUNTIME_CLASS(CDCDoc),
   RUNTIME_CLASS(CChildFrame),
   RUNTIME_CLASS(CDCView)));

aşağıda ikinci bir örnek verilmiştir.

// Code fragment taken from CMyApp::InitInstance

// Normally, an application creates a document 
// template and registers it with MFC as a part
// of its initialization.

// IDR_EXAMPLEDOCTYPE is a resource ID string; see
// the CDocTemplate class overview documentation
// for more information on its format.

// The next three parameters use the RUNTIME_CLASS()
// macro to get runtime type information for the doc,
// frame, and view classes that will be associated
// by the template.

pDocTemplate = new CMultiDocTemplate(IDR_EXAMPLEDOCTYPE,
   RUNTIME_CLASS(CExampleDoc),
   RUNTIME_CLASS(CChildFrame),
   RUNTIME_CLASS(CExampleView));
if (!pDocTemplate)
return FALSE;

// After the following call, MFC is aware of the doc
// template and will free it when the application is
// shut down. The doc templates known to MFC will
// automatically be used when CWinApp:OnFileOpen()
// or CWinApp::OnFileNew() are called.

AddDocTemplate(pDocTemplate);

Ayrıca bkz.

CDocTemplate Sınıfı
Hiyerarşi Grafiği
CDocTemplate Sınıfı
CSingleDocTemplate Sınıfı
CWinApp Sınıfı