次の方法で共有


SUPERPAD サンプル : CEditView を使用してテキストを編集するビジュアル編集サーバーの例

更新 : 2007 年 11 月

SUPERPAD サンプルでは、ビジュアル編集サーバー サポートと組み合わせて CEditView クラスを使用する方法を示します。

ms177543.alert_security(ja-jp,VS.90).gifセキュリティに関するメモ :

このサンプル コードは概念を示す目的で提供されているものです。必ずしも最も安全なコーディング手法に従っているわけではないので、アプリケーションまたは Web サイトでは使用しないでください。Microsoft は、サンプル コードが意図しない目的で使用された場合に、付随的または間接的な損害について責任を負いません。

サンプルとそのインストール手順を取得するには

  • Visual Studio で、[ヘルプ] メニューの [サンプル] をクリックします。

    詳細については、「サンプル ファイルの格納場所」を参照してください。

  • 使用できるサンプルの最新バージョンと完全な一覧については、オンラインの Visual Studio 2008 Samples のページを参照してください。

  • サンプルは、コンピュータのハード ディスク上にもあります。既定では、サンプルおよび Readme ファイルは、\Program Files\Visual Studio 9.0\Samples\ の下のフォルダにコピーされます。Visual Studio Express Edition の場合、すべてのサンプルはオンライン上にあります。

サンプルのビルドと実行

SUPERPAD サンプルをビルドおよび実行するには

  1. ソリューション ファイル superpad.sln を開きます。

  2. [ビルド] メニューの [ビルド] をクリックします。

  3. SUPERPAD をビジュアル編集サーバーとして使用するには、システムに登録されるようにスタンドアロン アプリケーションとして 1 回実行します。

    最初に SUPERPAD を実行すると、[About] ダイアログ ボックスに似たスプラッシュ ウィンドウが表示されます。このダイアログ ボックスは、短時間しか画面に表示されず、タイムアウトの時間になると消えます。スプラッシュ ウィンドウを閉じるには、いずれかのキーを押すか、マウスをクリックします。

    SUPERPAD には、前回使用したウィンドウの位置が保存されています。また、ドキュメント ウィンドウが MDI フレーム ウィンドウで最大化されていたかどうかの情報も保存されています。

SUPERPAD のその他の機能

SUPERPAD では、エディット コントロールのワード ラップ状態の切り替えや画面フォントとプリンタ フォントの変更などを含む、クラスの派生による CEditView の高度な使い方を示します。また、さまざまな MFC プログラミング テクニックも示します。

  • システム リソースの使用状況を示す [About] ダイアログ ボックス。

  • アプリケーションを初めて起動するときに表示されるスプラッシュ ウィンドウ。

  • ウィンドウの位置情報を個人用 .ini ファイルに格納することによる永続的なウィンドウ配置。

  • アイドル ループ処理。

  • 待機カーソルの使用。

  • ウィンドウのサブクラス化。

  • 印刷時のページのヘッダーとフッターの追加。

  • 印刷時の改ページ。

  • ドキュメントの現在の選択内容で印刷プレビューを開始する。

  • 印刷プレビューからドキュメント内の最後にプレビューされた位置に戻る。

  • 標準フォント ダイアログ ボックス (CFontDialog)。

SUPERPAD のメニュー

[File] メニューには、標準のコマンド (New、[Open]、[Close]、[Save]、[Save As]、[Print]、[Print Preview]、[Print Setup]、最近使った (MRU: Most Recently Used) ファイルの一覧、および Exit) が用意されています。

[File] メニューには [Page Setup] も用意されており、ページごとにヘッダーやフッターを指定できます。不要な場合、ヘッダーやフッターは空のままにしておきます。ヘッダーとフッターには任意のテキストを指定できます。また、以下のいずれかの書式指定コードを指定できます。

  • &f (ファイル名)。

  • &p (ページ番号)。

  • C ランタイム strftime 関数に対して定義されているすべての書式指定コード。たとえば、%a (曜日の省略名)、%B (月の正式名)、%d (日付)、および %Y (4 桁の西暦) を指定できます。strftime は DLL では使用できないため、SUPERPAD を DLL バージョンの MFC にリンクしている場合、これらの書式指定オプションは使用できません。

SUPERPAD には、[Edit] メニューのコマンドとして [Cut][Copy][Page][Delete][Find]、[Find Next]、[Replace]、[Select All]、および [Undo] があり、これらは既定で CEditView によって処理されます。[Edit] メニューには、ワード ラップのオンとオフを切り替える [Word Wrap] も用意されています。

[View] メニューには、CEditView のさまざまな機能を実行する以下のコマンドが用意されています。

  • [Set Tab Stops] - 等間隔のタブ ストップを指定するために、ダイアログ ボックスに整数を 1 つ入力します。

  • [Set Font] - ファイルを画面に表示するときに使用するフォントを指定します。

  • [Set Printer Font] - 印刷時に使用するフォントを指定します。

  • [Mirror Display Font] - 現在指定されているプリンタ フォントを一時的に選択解除して、画面フォントに最も近いプリンタ フォントを代わりに使用する場合は、この切り替えの状態をオンにします。

SUPERPAD のクラス

SUPERPAD の CPadView ビュー クラスは CEditView から派生しています。CPadView は、CEditView の属性と操作を使用して、ここで説明するように CEditView の機能を追加します。

CPadView は、CEditView::SetFontSetPrinterFont を呼び出して、スクリーン フォントとプリンタ フォントの初期化と変更を行います。

[Edit] メニューの [Word Wrap] を実装するために、CPadView はエディット コントロールを新規作成してワード ラップの状態を切り替えます。新しいエディット コントロールの WNDCLASS は、標準の Windows エディット コントロールです。このクラスは、コントロールの ES_AUTOHSCROLL スタイルと WS_HSCROLL スタイルを切り替えます。これらのスタイルによって、エディット コントロールがワード ラップを行うかどうかが決まります。CPadView は、古いエディット コントロールのバッファを保存して、それを新しいエディット コントロールに移します。最後に、古いエディット コントロールを破棄してから、CWnd::SubclassWindow を呼び出して、新しいエディット コントロールの hWnd を CPadView クラスに関連付けます。

CPadView は、OnPrint をオーバーライドしてページ ヘッダーとページ フッターを追加します。また、OnBeginPrinting をオーバーライドして現在時刻を設定します。この時刻は、ヘッダーまたはフッター (あるいはその両方) にオプションで表示されます。さらに、エディット コントロールの現在の選択内容で印刷プレビューを開始します。

CPadView は、CView::OnScrollTo をオーバーライドして、印刷プレビュー時に最後に表示された場所までビューをスクロールします。

キーワード

このサンプルでは、次のキーワードを使用します。

AfxGetApp; AfxGetInstanceHandle; AfxMessageBox; AfxOleInit; CArchive::Flush; CArchive::GetFile; CArchive::IsStoring; CBitmap::CreateCompatibleBitmap; CButton::DrawItem; CCmdUI::SetCheck; CDC::Attach; CDC::CreateCompatibleDC; CDC::Detach; CDC::DrawIcon; CDC::FillRect; CDC::GetDeviceCaps; CDC::GetTextMetrics; CDC::IntersectClipRect; CDC::LPtoHIMETRIC; CDC::LineTo; CDC::MoveTo; CDC::Rectangle; CDC::RestoreDC; CDC::SaveDC; CDC::SelectObject; CDC::SetBkMode; CDC::SetWindowExt; CDC::SetWindowOrg; CDC::StretchBlt; CDC::TextOut; CDialog::Create; CDialog::DoModal; CDialog::OnInitDialog; CDocTemplate::SetServerInfo; CDocument::DeleteContents; CDocument::GetFirstViewPosition; CDocument::GetNextView; CEditView::GetEditCtrl; CEditView::GetPrinterFont; CEditView::PrintInsideRect; CEditView::SerializeRaw; CEditView::SetPrinterFont; CEditView::SetTabStops; CEditView::dwStyleDefault; CFile::Write; CFont::CreateFontIndirect; CFontDialog::DoModal; CFrameWnd::ActivateFrame; CFrameWnd::Create; CFrameWnd::LoadFrame; CGdiObject::CreateStockObject; CGdiObject::DeleteObject; CGdiObject::GetObject; CObject::AssertValid; CObject::Dump; CObject::IsKindOf; CObject::Serialize; COleIPFrameWnd::OnCreateControlBars; COleLinkingDoc::OnGetLinkedItem; COleResizeBar::Create; COleServerDoc::IsInPlaceActive; COleServerDoc::OnDeactivateUI; COleServerDoc::OnGetEmbeddedItem; COleServerDoc::UpdateAllItems; COleServerItem::CopyToClipboard; COleServerItem::GetDataSource; COleServerItem::GetDocument; COleServerItem::OnDraw; COleServerItem::OnGetExtent; COleServerItem::OnRenderFileData; COleServerItem::OnShow; COleServerItem::SetItemName; COleTemplateServer::ConnectTemplate; COleTemplateServer::UpdateRegistry; CPrintDialog::CreatePrinterDC; CPrintInfo::SetMaxPage; CRect::Height; CRect::InflateRect; CRect::IsRectEmpty; CRect::SetRect; CRect::Size; CRect::Width; CStatusBar::Create; CStatusBar::SetIndicators; CString::Find; CString::GetBuffer; CString::GetLength; CString::IsEmpty; CString::Left; CString::LoadString; CString::Mid; CString::ReleaseBuffer; CTime::Format; CToolBar::Create; CToolBar::LoadBitmap; CToolBar::SetButtons; CView::GetDocument; CView::OnBeginPrinting; CView::OnPrepareDC; CView::OnPrint; CWinApp::AddDocTemplate; CWinApp::EnableShellOpen; CWinApp::ExitInstance; CWinApp::GetProfileInt; CWinApp::GetProfileString; CWinApp::InitInstance; CWinApp::LoadStdProfileSettings; CWinApp::OnIdle; CWinApp::PreTranslateMessage; CWinApp::RegisterShellFileTypes; CWinApp::WriteProfileInt; CWinApp::WriteProfileString; CWnd::BringWindowToTop; CWnd::CenterWindow; CWnd::DestroyWindow; CWnd::Detach; CWnd::DoDataExchange; CWnd::FromHandle; CWnd::GetClientRect; CWnd::GetDC; CWnd::GetDlgCtrlID; CWnd::GetFocus; CWnd::GetFont; CWnd::GetParent; CWnd::GetParentFrame; CWnd::GetStyle; CWnd::GetSuperWndProcAddr; CWnd::GetWindowPlacement; CWnd::GetWindowRect; CWnd::GetWindowText; CWnd::GetWindowTextLength; CWnd::IsZoomed; CWnd::KillTimer; CWnd::OnClose; CWnd::OnCreate; CWnd::OnEraseBkgnd; CWnd::OnRButtonDown; CWnd::OnSize; CWnd::OnTimer; CWnd::PreCreateWindow; CWnd::ReleaseDC; CWnd::ScreenToClient; CWnd::SendMessage; CWnd::SetDlgCtrlID; CWnd::SetDlgItemText; CWnd::SetFocus; CWnd::SetFont; CWnd::SetOwner; CWnd::SetTimer; CWnd::SetWindowPlacement; CWnd::SetWindowPos; CWnd::SetWindowText; CWnd::ShowWindow; CWnd::SubclassDlgItem; CWnd::SubclassWindow; CWnd::UpdateWindow; CreateWindow; DragAcceptFiles; GetCurrentTime; GetObject; GetProfileInt; GetProfileString; GetStockObject; GetSystemMetrics; GlobalMemoryStatus; IsIconic; IsWindowVisible; LOWORD; LoadIcon; MulDiv; SetWindowLong; SetWindowPos; UpdateWindow; WideCharToMultiByte; WriteProfileString; _alloca; _getdrive; lstrcpyn; lstrlen; min; wcstombs; wsprintf

ms177543.alert_note(ja-jp,VS.90).gifメモ :

このサンプルを含む一部のサンプルには、Visual C++ のウィザード、ライブラリ、およびコンパイラの変更が反映されていませんが、必要なタスクを実行する方法は示されています。

参照

その他の技術情報

MFC サンプル