CSingleDocTemplate クラスCSingleDocTemplate Class

SDI (シングル ドキュメント インターフェイス) を実装するドキュメント テンプレートを定義します。Defines a document template that implements the single document interface (SDI).

構文Syntax

class CSingleDocTemplate : public CDocTemplate

メンバーMembers

パブリック コンストラクターPublic Constructors

名前Name 説明Description
テンプレートを使用します。CSingleDocTemplate::CSingleDocTemplate CSingleDocTemplate オブジェクトを構築します。Constructs a CSingleDocTemplate object.

解説Remarks

SDI アプリケーションでは、メイン フレーム ウィンドウを使用してドキュメントを表示します。一度に開くことができるドキュメントは 1 つだけです。An SDI application uses the main frame window to display a document; only one document can be open at a time.

ドキュメント テンプレートは、次の 3 種類のクラスの間の関係を定義します。A document template defines the relationship between three types of classes:

  • から派生するドキュメント クラスCDocumentA document class, which you derive from CDocument.

  • 上記のドキュメント クラスのデータを表示するビュー クラス。A view class, which displays data from the document class listed above. このクラスCViewは、 CScrollView、 、 CFormViewCEditView、 、 から派生できます。You can derive this class from CView, CScrollView, CFormView, or CEditView. (直接使用CEditViewすることもできます。(You can also use CEditView directly.)

  • ビューを含むフレーム ウィンドウ クラス。A frame window class, which contains the view. SDI ドキュメント テンプレートの場合、このクラスをからCFrameWnd派生させることができます。メイン フレーム ウィンドウの動作をカスタマイズする必要がない場合は、独自のクラスCFrameWndを派生させずに直接使用できます。For an SDI document template, you can derive this class from CFrameWnd; if you do not need to customize the behavior of the main frame window, you can use CFrameWnd directly without deriving your own class.

SDI アプリケーションは通常、1 種類のドキュメントをサポートするため、CSingleDocTemplateオブジェクトは 1 つだけです。An SDI application typically supports one type of document, so it has only one CSingleDocTemplate object. 一度に開くことができるドキュメントは 1 つだけです。Only one document can be open at a time.

コンストラクターCSingleDocTemplate以外のメンバー関数を呼び出す必要はありません。You don't need to call any member functions of CSingleDocTemplate except the constructor. フレームワークはオブジェクトCSingleDocTemplateを内部的に処理します。The framework handles CSingleDocTemplate objects internally.

の使用CSingleDocTemplateの詳細については、「ドキュメント テンプレートとドキュメント/ビュー作成プロセス」を参照してください。For more information on using CSingleDocTemplate, see Document Templates and the Document/View Creation Process.

継承階層Inheritance Hierarchy

CObjectCObject

CCmdTargetCCmdTarget

CDocTemplateCDocTemplate

CSingleDocTemplate

必要条件Requirements

ヘッダー: afxwin.hHeader: afxwin.h

テンプレートを使用します。CSingleDocTemplate::CSingleDocTemplate

CSingleDocTemplate オブジェクトを構築します。Constructs a CSingleDocTemplate object.

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

パラメーターParameters

リソースnIDResource
ドキュメントタイプで使用されるリソースの ID を指定します。Specifies the ID of the resources used with the document type. これには、メニュー、アイコン、アクセラレータ テーブル、および文字列リソースが含まれます。This may include menu, icon, accelerator table, and string resources.

文字列リソースは、'\n' 文字で区切られた最大 7 個の部分文字列で構成されます (部分文字列が含まれていない場合はプレースホルダとして '\n' 文字が必要です。これらの部分文字列はドキュメントタイプを記述します。The string resource consists of up to seven substrings separated by the '\n' character (the '\n' character is needed as a placeholder if a substring is not included; however, trailing '\n' characters are not necessary); these substrings describe the document type. サブストリングの詳細については、「CDoc テンプレート::GetDocString」を参照してください。For information about the substrings, see CDocTemplate::GetDocString. この文字列リソースは、アプリケーションのリソース ファイルにあります。This string resource is found in the application's resource file. 次に例を示します。For example:

// MYCALC.RC
STRINGTABLE PRELOAD DISCARDABLE
BEGIN
  IDR_MAINFRAME "MyCalc Windows Application\nSheet\nWorksheet\n Worksheets (*.myc)\n.myc\nMyCalcSheet\n MyCalc Worksheet"
END

この文字列は、文字列エディタを使用して編集できます。文字列全体が、7 つの個別のエントリではなく、文字列エディタ内の単一のエントリとして表示されます。You can edit this string using the string editor; the entire string appears as a single entry in the String Editor, not as seven separate entries.

これらのリソースの種類の詳細については、「文字列エディタ」を参照してください。For more information about these resource types, see the String Editor.

クラスpDocClass
ドキュメント クラスCRuntimeClassのオブジェクトへのポイント。Points to the CRuntimeClass object of the document class. このクラスは、CDocumentドキュメントを表すために定義する派生クラスです。This class is a CDocument-derived class you define to represent your documents.

クラスpFrameClass
フレーム ウィンドウCRuntimeClassクラスのオブジェクトへのポイント。Points to the CRuntimeClass object of the frame window class. このクラスはCFrameWnd、派生クラスにすることも、メイン フレームCFrameWndウィンドウの既定の動作を行う場合は、それ自体にすることもできます。This class can be a CFrameWnd-derived class, or it can be CFrameWnd itself if you want default behavior for your main frame window.

クラスを表示します。pViewClass
ビュー クラスCRuntimeClassのオブジェクトへのポイント。Points to the CRuntimeClass object of the view class. このクラスは、CViewドキュメントを表示するために定義する派生クラスです。This class is a CView-derived class you define to display your documents.

解説Remarks

オブジェクトをCSingleDocTemplate動的に割り当て、CWinApp::AddDocTemplateアプリケーションInitInstanceクラスのメンバー関数から渡します。Dynamically allocate a CSingleDocTemplate object and pass it to CWinApp::AddDocTemplate from the InitInstance member function of your application class.

Example

// The following code fragment is from CMyWinApp::InitInstance.
// CMyWinApp is derived from CWinApp.

// Establish the document type
// supported by the application
AddDocTemplate(new CSingleDocTemplate(IDR_MAINFRAME,
   RUNTIME_CLASS(CMyDoc),
   RUNTIME_CLASS(CMainFrame),       // main SDI frame window
   RUNTIME_CLASS(CMyView)));
// The following code fragment is from CMyWinApp::InitInstance.
// CMyWinApp is derived from CWinApp.

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

// IDR_SAMPLERESOURCE 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.

CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(IDR_MAINFRAME,
   RUNTIME_CLASS(CMyDoc),
   RUNTIME_CLASS(CMainFrame),       // main SDI frame window
   RUNTIME_CLASS(CMyView));
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);

関連項目See also

MFC サンプル ドッキングツールMFC Sample DOCKTOOL
クラスCDocTemplate Class
階層グラフHierarchy Chart
クラスCDocTemplate Class
CDocument クラスCDocument Class
CFrameWnd クラスCFrameWnd Class
CMultiDocTemplate クラスCMultiDocTemplate Class
CビュークラスCView Class
CWinApp クラスCWinApp Class