SUPERPAD-Beispiel: Demonstriert einen Server zur visuellen Bearbeitung, der Text mithilfe von "CEditView" bearbeitet
Aktualisiert: November 2007
Das SUPERPAD-Beispiel veranschaulicht, wie Sie die CEditView-Klasse in Verbindung mit der Serverunterstützung für die visuelle Bearbeitung verwenden.
Sicherheitshinweis: |
---|
Dieser Beispielcode dient dazu, ein Konzept zu veranschaulichen. Er sollte nicht für Anwendungen oder Websites verwendet werden, da dieser Code unter Umständen nicht die sicherste Codierungstechnik darstellt. Microsoft übernimmt keine Haftung für beiläufig entstandene Schäden oder Folgeschäden, falls der Beispielcode nicht bestimmungsgemäß verwendet wird. |
So rufen Sie Beispiele und Anweisungen für ihre Installation ab
Klicken Sie in Visual Studio im Menü Hilfe auf Beispiele.
Weitere Informationen finden Sie unter Suchen von Beispieldateien.
Die neueste Version und vollständige Liste mit Beispielen ist online unter Visual Studio 2008 Samples verfügbar.
Sie können auch Beispiele auf der Festplatte des Computers suchen. Standardmäßig werden Beispiele und eine Infodatei in einen Ordner unter \Programme\Visual Studio 9.0\Samples\ kopiert. Für Express Editions von Visual Studio sind alle Beispiele online verfügbar.
Erstellen und Ausführen des Beispiels
So erstellen Sie das SUPERPAD-Beispiel und führen es aus
Öffnen Sie die Projektmappe superpad.sln.
Klicken Sie im Menü Erstellen auf Erstellen.
Um SUPERPAD als Server für visuelle Bearbeitung verwenden zu können, führen Sie das Beispiel einmal als eigenständige Anwendung aus, damit es sich beim System registrieren kann.
Wenn Sie das SUPERPAD-Beispiel zum ersten Mal ausführen, wird ein Begrüßungsfenster angezeigt, das wie ein Info-Dialogfeld aussieht. Dieses Dialogfeld ist nur kurze Zeit auf dem Bildschirm zu sehen und wird dann nach einem Timeout ausgeblendet. Wenn Sie das Begrüßungsfenster schließen möchten, drücken Sie eine beliebige Taste oder klicken mit der Maus.
SUPERPAD hat die Position des Fensters von der letzten Ausführung gespeichert. Ebenso wurde gespeichert, ob das Dokumentfenster im MDI-Rahmenfenster maximiert war.
Weitere SUPERPAD-Features
SUPERPAD veranschaulicht erweiterte Verwendungen von CEditView durch Klassenableitung, einschließlich Umschalten des Zeilenumbruchzustands des Edit-Steuerelements sowie Ändern der Bildschirm- und Druckerschriftart. Außerdem zeigt SUPERPAD eine Vielzahl von MFC-Programmiertechniken.
Info-Dialogfeld mit Anzeige der Systemressourcenauslastung.
Begrüßungsfenster, das beim ersten Starten der Anwendung angezeigt wird.
Dauerhafte Fensteranordnung durch Speichern der Fensterpositionsdaten in einer privaten INI-Datei.
Leerlaufschleifen-Verarbeitung.
Verwenden eines Wartecursors.
Erstellen von Unterklassen von einem Fenster.
Hinzufügen von Kopf- und Fußzeilen während des Druckens.
Seitenumbruch während des Druckens.
Starten der Seitenansicht bei der aktuellen Auswahl im Dokument.
Zurückkehren von der Seitenansicht zu der Position im Dokument, die zuletzt in der Seitenansicht betrachtet wurde.
Standarddialogfeld für Schriftarten (CFontDialog).
SUPERPAD-Menüs
Das Menü Datei enthält Standardbefehle – New, Öffnen, Schließen, Speichern, Speichern unter, Drucken, Seitenansicht, Druckeinrichtung, die Liste der zuletzt geöffneten Dateien und Exit.
Außerdem enthält das Menü Datei die Option Seite einrichten, mit der Sie Kopf- und/oder Fußzeile für jede Seite festlegen können. Wenn Sie keine Kopf- oder Fußzeile wünschen, lassen Sie diese leer. Sie können in der Kopf- bzw. Fußzeile beliebigen Text eingeben. Außerdem können Sie einen der folgenden Formatierungscodes angeben:
&f für den Dateinamen.
&p für die Seitenzahl.
Alle für die C-Laufzeitfunktion strftime definierten Formatierungscodes. Zum Beispiel können %a für den abgekürzten Namen des Wochentages, %B für den vollständigen Monatsnamen, %d für den Tag des Monats und %Y für die vollständige Jahreszahl eingegeben werden. Diese Formatierungsoptionen stehen nicht zur Verfügung, wenn Sie SUPERPAD mit der DLL-Version von MFC verknüpfen, da strftime in einer DLL nicht verfügbar ist.
SUPERPAD enthält die folgenden Befehle im Menü Bearbeiten, die standardmäßig von CEditView behandelt werden: Ausschneiden, Kopieren, Seite, Löschen, Suchen, Weitersuchen, Ersetzen, Alle auswählen und Rückgängig. Das Menü Bearbeiten enthält außerdem den Befehl Zeilenumbruch zum Aktivieren und Deaktivieren des Zeilenumbruchs.
Das Menü Ansicht enthält folgende Befehle, die verschiedene Features von CEditView anwenden:
Set Tab Stops – geben Sie eine einzelne ganze Zahl im Dialogfeld ein, um Tabstopps in gleichmäßigen Abständen zu setzen.
Set Font – geben Sie an, welche Schriftart beim Anzeigen der Datei auf dem Bildschirm verwendet werden soll.
Set Printer Font – geben Sie an, welche Schriftart beim Drucken verwendet werden soll.
Mirror Display Font – Aktivieren Sie diesen Zustand, wenn Sie die aktuell eingestellte Druckerschriftart zeitweise deaktivieren und stattdessen eine Druckerschriftart verwenden möchten, die der Bildschirmschriftart möglichst ähnlich ist.
SUPERPAD-Klassen
SUPERPAD leitet seine Ansichtsklasse CPadView von CEditView ab. CPadView greift auf die Attribute und Vorgänge von CEditView zu und erweitert dadurch, wie hier beschrieben, die Funktionalität von CEditView.
CPadView ruft CEditView::SetFont und SetPrinterFont auf, um die Bildschirm- und Druckerschriftarten zu initialisieren und zu ändern.
Zum Implementieren des Befehls Edit Word Wrap schaltet CPadView den Zustand des Zeilenumbruchs um, indem ein neues Edit-Steuerelement erstellt wird (dessen WNDCLASS das standardmäßige Edit-Steuerelement von Windows ist). Das ES_AUTOHSCROLL-Format und das WS_HSCROLL-Format des Steuerelements, die gemeinsam bestimmen, ob ein Edit-Steuerelement einen Zeilenumbruch durchführt, werden umgeschaltet. CPadView speichert den Puffer des alten Edit-Steuerelements und verschiebt ihn in das neue Edit-Steuerelement. Abschließend zerstört CPadView das alte Edit-Steuerelement und verknüpft die hWnd-Eigenschaft des neuen Edit-Steuerelements mit der CPadView-Klasse durch Aufrufen von CWnd::SubclassWindow.
CPadView überschreibt OnPrint, um Kopf- und Fußzeilen hinzuzufügen. Dabei wird OnBeginPrinting überschrieben, um die aktuelle Zeit einzustellen, die entweder in der Kopfzeile, der Fußzeile oder in beiden angezeigt wird. Die Seitenansicht wird bei der aktuellen Auswahl im Dokument gestartet.
CPadView überschreibt CView::OnScrollTo, um in der Ansicht einen Bildlauf zu der Position durchzuführen, die zuletzt in der Seitenansicht angezeigt wurde.
Schlüsselwörter
Dieses Beispiel demonstriert die Verwendung der folgenden Schlüsselwörter:
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
Hinweis: |
---|
In diesem und einigen anderen Beispielen wurden die Änderungen an den Visual C++-Assistenten, -Bibliotheken und -Compilern noch nicht nachvollzogen. Sie demonstrieren aber dennoch, wie Sie die gewünschte Aufgabe durchführen können. |