CSingleDocTemplate クラス

SDI (シングル ドキュメント インターフェイス) を実装するドキュメント テンプレートを定義します。

構文

class CSingleDocTemplate : public CDocTemplate

メンバー

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

名前 説明
CSingleDocTemplate::CSingleDocTemplate CSingleDocTemplate オブジェクトを構築します。

解説

SDI アプリケーションでは、メイン フレーム ウィンドウを使用してドキュメントを表示します。一度に開くことができるドキュメントは 1 つだけです。

ドキュメント テンプレートは、次の 3 種類のクラス間のリレーションシップを定義します。

  • ドキュメント クラス。 CDocumentから派生します。

  • ビュー クラス。上記のドキュメント クラスのデータを表示します。 このクラスは、 CViewCScrollViewCFormView、または CEditViewから派生させることができます。 ( CEditView を直接使用することもできます)。

  • ビューを含むフレーム ウィンドウ クラス。 SDI ドキュメント テンプレートの場合は、 CFrameWndからこのクラスを派生させることができます。メイン フレーム ウィンドウの動作をカスタマイズする必要がない場合は、独自のクラスを派生させずに直接 CFrameWnd を使用できます。

通常、SDI アプリケーションは 1 種類のドキュメントをサポートするため、 CSingleDocTemplate オブジェクトは 1 つだけです。 一度に開くことができるドキュメントは 1 つだけです。

コンストラクターを除き、 CSingleDocTemplate のメンバー関数を呼び出す必要はありません。 フレームワークは CSingleDocTemplate オブジェクトを内部的に処理します。

CSingleDocTemplateの使用方法の詳細については、「Document テンプレートとドキュメント/ビュー作成プロセスを参照してください。

継承階層

CObject

CCmdTarget

CDocTemplate

CSingleDocTemplate

要件

ヘッダー: afxwin.h

CSingleDocTemplate::CSingleDocTemplate

CSingleDocTemplate オブジェクトを構築します。

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

パラメーター

nIDResource
ドキュメントの種類で使用されるリソースの ID を指定します。 これには、メニュー、アイコン、アクセラレータ テーブル、および文字列リソースが含まれる場合があります。

文字列リソースは、'\n' 文字で区切られた最大 7 個の部分文字列で構成されます (部分文字列が含まれていない場合は、プレースホルダーとして '\n' 文字が必要です。ただし、末尾の '\n' 文字は必要ありません)。これらの部分文字列は、ドキュメントの種類を記述します。 部分文字列の詳細については、「 CDocTemplate::GetDocStringを参照してください。 この文字列リソースは、アプリケーションのリソース ファイルにあります。 次に例を示します。

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

この文字列は、文字列エディターを使用して編集できます。文字列全体は、7 つの個別のエントリではなく、文字列エディターで 1 つのエントリとして表示されます。

これらのリソースの種類の詳細については、 String エディターを参照してください。

pDocClass
ドキュメント クラスの CRuntimeClass オブジェクトをポイントします。 このクラスは、ドキュメントを表すために定義する CDocument派生クラスです。

pFrameClass
フレーム ウィンドウ クラスの CRuntimeClass オブジェクトをポイントします。 このクラスは CFrameWnd派生クラスにすることも、メイン フレーム ウィンドウの既定の動作が必要な場合はそれ自体 CFrameWnd することもできます。

pViewClass
ビュー クラスの CRuntimeClass オブジェクトをポイントします。 このクラスは、ドキュメントを表示するために定義する CView派生クラスです。

解説

CSingleDocTemplate オブジェクトを動的に割り当て、アプリケーション クラスのInitInstance メンバー関数からCWinApp::AddDocTemplateに渡します。

// 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);

関連項目

MFC サンプル DOCKTOOL
CDocTemplate クラス
階層図
CDocTemplate クラス
CDocument クラス
CFrameWnd クラス
CMultiDocTemplate クラス
CView クラス
CWinApp クラス