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:
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
,CFormView
veyaCEditView
öğesinden türetebilirsiniz. (Doğrudan da kullanabilirsinizCEditView
.)Görünümü içeren bir çerçeve penceresi sınıfı. MDI belge şablonu için, bu sınıfı öğesinden
CMDIChildWnd
tü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 CMultiDocTemplate
daha fazla bilgi için bkz . Belge Şablonları ve Belge/Görünüm Oluşturma İşlemi.
Devralma Hiyerarşisi
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 CDocument
sınıftır.
pFrameClass
CRuntimeClass
Çerçeve penceresi sınıfının nesnesini gösterir. Bu sınıf- türetilmiş bir CMDIChildWnd
sı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 CView
sı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ı