SUPERPAD サンプル:CEditView を使用してテキストを編集するサーバーを編集する Visual を示します

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

セキュリティに関するメモセキュリティに関するメモ

このサンプル コードは概念を示すためのものであり、その概念に関連するコードのみを示しています。特定の環境について必ずしもセキュリティ要件を満たしていませんので、そのまま使用しないでください。セキュリティおよびエラー処理コードを追加して、プロジェクトをより安全かつ堅牢にすることをお勧めします。これらのサンプル コードは、現状有姿のままで提供されるものであり、一切保証されていません。

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

Visual Studio のサンプルにアクセスするには

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

    既定では、これらのサンプルは drive:\Program Files\Microsoft Visual Studio 10.0\Samples\ にインストールされています。

  • このサンプルの最新版および他のサンプルの一覧については、MSDN Web サイト上で Visual Studio サンプル 」を参照してください。

サンプルのビルドと実行

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

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

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

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

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

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

SUPERPAD のその他の機能

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

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

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

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

  • アイドル ループ処理。

  • 待機カーソルの使用。

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

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

  • 印刷時の改ページ。

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

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

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

SUPERPAD のメニュー

ファイル メニューの [標準コマンドが用意されています (MRU ファイル リスト、および の新しい、のファイルを開く、閉じるの、名前を付けて印刷の、印刷プレビューのプリンターの設定のExit、最も最近の保存を使用します。

ファイル メニューには、 ページごとのヘッダーやフッターを指定するためのページ設定 オプションも用意されています。 不要な場合、ヘッダーやフッターは空のままにしておきます。 ヘッダーとフッターには任意のテキストを指定できます。 また、以下のいずれかの書式指定コードを指定できます。

  • &f (ファイル名)。

  • &p (ページ番号)。

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

SUPERPAD 次 に既定で処理される によって編集 CEditView メニュー コマンドが用意されています。 Cut, Copy, Page, Delete, Find. [次へ] 置換を検索するには、すべての 、および元に戻す を選択します。 The Edit menu also offers a WordWrap command to turn word wrapping on or off.

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

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

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

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

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

SUPERPAD のクラス

SUPERPAD そのビュー クラス CPadViewCEditView から派生します。 CPadView 属性および操作の CEditView の機能に追加するのには、 CEditView をここで説明したアクセスします。

CPadView CEditView::SetFont SetPrinterFont を初期化し、画面とプリンター フォントを変更するを呼び出します。

編集折り返す] コマンドを実装するには、"( CPadView を標準の Windows のエディット コントロールです)、新しいエディット コントロールを作成することによって状態のワード ラップ WNDCLASS 切り替えます。 ES_AUTOHSCROLL と連携するエディット コントロールの折り返し単語しないかどうかを決定する WS_HSCROLL スタイル コントロールを切り替えます。 CPadView 古いエディット コントロールのバッファーに保存し、新しいエディット コントロールに移動します。 最後に、古いエディット コントロールを破棄して呼び出して hWndCPadView 新しいエディット コントロールの CWnd::SubclassWindow クラスに関連付けます。

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

CPadView CView::OnScrollTo をビューに表示印刷プレビュー時に前回と同じ位置にスクロールするよりも優先されます。

Keywords

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

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

注意

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

参照

その他の技術情報

MFC サンプル