Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das Textobjektmodell (TEXT Object Model, TOM) definiert eine Reihe von Textbearbeitungsschnittstellen, die von mehreren Microsoft-Textlösungen unterstützt werden, einschließlich des Rich-Edit-Steuerelements. Dieses Thema bietet eine allgemeine Übersicht über den TOM. Es werden die folgenden Themen erläutert.
- TOM Version 2-Objekte
- TOM-Schnittstellenkonventionen
- Der TomBool-Typ
- Mathematisches Auf- und Abbauen
- TOM RTF
- Suchen nach Rich-Text
- TOM-Barrierefreiheit
- Zeichen-Übereinstimmungssätze
TOM Version 2-Objekte
TOM Version 2 (TOM 2) erweitert das ursprüngliche Textobjektmodell; die neuen Schnittstellen werden von den alten abgeleitet. Die aktualisierte TOM-API enthält Unterstützung für neue Zeichen- und Absatzformateigenschaften, ein Tabellenmodell, mehrfache Auswahl und Inlineobjektunterstützung für Mathematik und Ruby.
Das TOM 2-Objekt der obersten Ebene wird durch die ITextDocument2-Schnittstelle definiert, die Methoden zum Erstellen und Abrufen von Objekten enthält, die in der Objekthierarchie niedriger sind. Für einfache Nur-Text-Verarbeitung können Sie ein ITextRange2-Objekt aus einem ITextDocument2-Objekt abrufen und die meisten Aktionen damit ausführen. Wenn Sie Rich-Text-Formatierung hinzufügen müssen, können Sie ITextFont2 - und ITextPara2-Objekte aus einem ITextRange2-Objekt abrufen. ITextFont2 stellt das Programmieräquivalent des Dialogfelds "Microsoft Word-Formatschriftart" bereit, und ITextPara2 stellt das Äquivalent des Word-Dialogfelds "Formatabsatz" bereit.
Neben diesen drei Objekten auf niedrigerer Ebene verfügt TOM 2 über ein Auswahlobjekt (ITextSelection2), bei dem es sich um ein ITextRange2-Objekt mit Auswahlmarkierung und einigen UI-orientierten Methoden handelt.
Der Bereich und die Auswahlobjekte umfassen bildschirmorientierte Methoden, mit denen Programme Text auf dem Bildschirm oder Text untersuchen können, der auf dem Bildschirm gescrollt werden kann. Diese Funktionen helfen beispielsweise, Text für Personen mit eingeschränkter Sehkraft zugänglich zu machen.
Jede Schnittstelle mit dem Suffix 2 erbt von der entsprechenden Schnittstelle ohne das Suffix 2. Beispielsweise erbt ITextDocument2 von ITextDocument.
Die TOM 2-Objekte weisen die folgende Hierarchie auf.
ITextDocument2 Top-level editing object
ITextRange2 Primary text interface: a range of text
ITextFont2 Character-attribute interface
ITextPara2 Paragraph-attribute interface
ITextRow Table interface
ITextSelection2 Screen highlighted text range
ITextRange2 Selection inherits all range methods
ITextDisplays Displays collection (not yet defined)
ITextStrings Rich-text strings collection
ITextStoryRanges2 Enumerator for stories in document
Ein ITextDocument2-Objekt beschreibt einen oder mehrere zusammenhängende Textbereiche, die als Textabschnitte bezeichnet werden. Textabschnitte stellen verschiedene Teile eines Dokuments dar, z. B. den Haupttext des Dokuments, Kopf- und Fußzeilen, Fußnoten, Anmerkungen und Rich-Text-Scratchpads. Eine Entwurfsgeschichte wird beim Übersetzen zwischen linear formatierten mathematischen Ausdrücken und einer aufgebauten Form verwendet. Ein Scratchpad wird auch verwendet, um den Inhalt eines Bereichs zu speichern, der die aktuelle Kopierquelle ist, bevor der Inhalt geändert wird.
Ein ITextRange2-Objekt wird durch seine Anfangs- und Endzeichenpositionsversatz und ein Story-Objekt definiert. Es existiert nicht unabhängig von seinem übergeordneten Geschichtensegmentobjekt, obwohl sein Text in die Zwischenablage oder auf andere Ziele kopiert werden kann. Ein Textbereichsobjekt unterscheidet sich von Tabellenkalkulations- und anderen Bereichsobjekten, die durch andere Arten von Offsets definiert werden; Beispiel: Zeilen-/Spalten- oder Grafikposition (x, y). Ein Textbereichsobjekt kann sich auf verschiedene Arten ändern, ein Duplikat von sich selbst zurückgeben, und es kann befehligt werden, seine Anfangs- und Endzeichenpositionen und den Textabschnittzeiger auf die aktuelle Auswahl zu kopieren.
Ein explizites Story-Objekt ist nicht erforderlich, da ein ITextRange-Objekt immer erstellt werden kann, um einen bestimmten Textabschnitt darzustellen. Insbesondere kann das ITextDocument-Objekt ein ITextStoryRanges-Objekt erstellen, um die Textabschnitte im Dokument in Bezug auf Bereiche mit Anfangs- und Endzeichenpositionswerten zu enumerieren, die vollständige Textabschnitte beschreiben (z. B. 0 und tomForward).
Bei einem ITextStoryRanges2-Objekt ist kein explizites Story-Objekt erforderlich, da die einzelnen Storys durch ein ITextRange2-Objekt beschrieben werden. Insbesondere kann das ITextDocument2-Objekt ein ITextStoryRanges2-Objekt erstellen, um die Textabschnitte im Dokument in Bezug auf Bereiche mit Anfangs- und Endzeichenpositionswerten zu enumerieren, die vollständige Textabschnitte beschreiben (z. B. 0 und tomForward).
Die ITextRow-Schnittstelle zusammen mit den Methoden "ITextRange::Move " und "ITextRange::Expand" ermöglichen das Einfügen, Abfragen und Ändern von Tabellen.
TOM-Schnittstellenkonventionen
Alle TOM-Methoden geben HRESULT-Werte zurück. Im Allgemeinen geben die TOM-Methoden die folgenden Standardwerte zurück.
- E_OUTOFMEMORY
- E_INVALIDARG
- E_NOTIMPL
- E_FILENOTFOUND
- E_ACCESSDENIED
- E_FAIL
- CO_E_RELEASED
- NOERROR (identisch mit S_OK)
- S_FALSE
Beachten Sie folgendes: Wenn die Bearbeitungsinstanz, die einem TOM-Objekt wie ITextRange zugeordnet ist, gelöscht wird, wird das TOM-Objekt nutzlos, und alle zugehörigen Methoden geben CO_E_RELEASED zurück.
Zusätzlich zu den HRESULT-Rückgabewerten enthalten viele Methoden Ausgabeparameter, die Zeiger sind, die zum Zurückgeben von Werten verwendet werden. Für alle Schnittstellen sollten Sie alle Zeigerparameter überprüfen, um sicherzustellen, dass sie nicht null sind, bevor Sie sie verwenden. Wenn Sie einen NULL-Wert an eine Methode übergeben, die einen gültigen Zeiger erfordert, gibt die Methode E_INVALIDARG zurück. Optionale Ausgabezeiger mit NULL-Werten werden ignoriert.
Verwenden Sie Methoden mit Get- und Set-Präfixen, um Eigenschaften abzurufen und festzulegen. Boolesche Variablen verwenden tomFalse (0) für FALSE und tomTrue (-1) für TRUE.
TOM-Konstanten werden im TomConstants-Enumerationstyp definiert und beginnen mit dem Präfix-Tom, z. B. tomWord.
Der TomBool-Typ
Viele TOM-Methoden verwenden einen speziellen Variablentyp namens "tomBool" für Rich-Text-Attribute, die binäre Zustände aufweisen. Der TomBool-Typ unterscheidet sich vom booleschen Typ, da er vier Werte annehmen kann: tomTrue, tomFalse, tomToggle und tomUndefined. Die TomTrue - und tomFalse-Werte geben wahr und falsch an. Der TomToggle-Wert wird zum Umschalten einer Eigenschaft verwendet. Der tomUndefined-Wert , der traditionell NINCH genannt wird, ist ein spezieller No-Input-, No-Change-Wert, der mit Longs, Floats und COLORREFs funktioniert. Für Zeichenfolgen wird tomUndefined (oder NINCH) durch die NULL-Zeichenfolge dargestellt. Bei Eigenschaftseinstellungsvorgängen ändert die Verwendung von tomUndefined die Zieleigenschaft nicht. TomUndefined bedeutet für Eigenschaftserreichungsvorgänge, dass die Zeichen im Bereich unterschiedliche Werte aufweisen (es wird das graue Kontrollkästchen in Eigenschaftendialogfeldern angezeigt).
Mathematisches BuildUp und Build down
Mit der ITextRange2::BuildUpMath-Methode können Sie linear formatierte mathematische Ausdrücke in integrierte Versionen konvertieren. Die ITextRange2::Linearize-Methode führt die entgegengesetzte Konvertierung aus, die als Linearisierung oder Build down bezeichnet wird, um integrierte Versionen von mathematischen Ausdrücken wieder in ein lineares Format zu konvertieren. Die Mathematische Builddownfunktion ist nützlich, wenn Sie Nur-Text exportieren oder bestimmte Bearbeitungstypen aktivieren müssen.
TOM RTF
In TOM kann der Rich-Text-Austausch durch Gruppen expliziter Methodenaufrufe oder durch Übertragungen von Rich-Text im Rich-Text-Format (RTF) erreicht werden. Dieser Abschnitt enthält Tabellen mit RTF-Steuerelementwörtern für Absatzeigenschaften und für Zeicheneigenschaften.
TOM RTF-Absatzkontrollwörter
Steuerwort | Bedeutung |
---|---|
\ fi n | Erstzeileneinzug (der Standardwert ist Null). |
\behalten | Behalten Sie den Absatz intakt. |
\ behalten | Gehen Sie zum nächsten Absatz über. |
\ li n | Einzug von links (der Standardwert ist Null). |
\ Noline | Keine Zeilennummerierung. |
\ nowidctlpar | Deaktivieren Sie die Kontrolle über Witwen/Verwaiste. |
\ pagebb | Seitenumbruch vor dem Absatz. |
\Par | Neuer Absatz. |
\pard | Setzt auf Standardabsatzeigenschaften zurück. |
\QL | Linksbündig (Standardeinstellung). |
\ qr | Rechtsbündig ausgerichtet. |
\ qj | Ausgerichtet. |
\qc | Zentriert. |
\ ri n | Rechter Einzug (der Standardwert ist Null). |
\ s n | Formatvorlage n. |
\ sa n | Leerzeichen nach (der Standardwert ist Null). |
\ sb n | Leerzeichen davor (der Standardwert ist Null). |
\ sl n | Wenn n fehlt oder n=1000 ist, wird der Zeilenabstand durch das höchste Zeichen in der Zeile (Einzeilenabstand) bestimmt; wenn n> kleiner als null ist, wird mindestens diese Größe verwendet; wenn n null ist, wird genau |n| verwendet. Der Zeilenabstand ist ein mehrfacher Zeilenabstand, wenn \ slmult 1 folgt. |
\ slmult m | Folgends \ sl. m = null: Mindestens oder Genau Zeilenabstand wie beschrieben bei \ sl n. m = 1: Zeilenabstand = n/240 mal einfacher Zeilenabstand. |
\ tb n | Tabulatorposition in Twips vom linken Rand. |
\ tldot | Tabulatorpunkte. |
\ tleq | Füllzeichen Gleichheitszeichen |
\ tlhyph | Füllstriche für Tabstopps. |
\ tlth | Tabulator-Füllzeichen dicke Linie. |
\ tlul | Tabulator-Füllzeichen Strich. |
\Tqc | Zentrierte Registerkarte. |
\ tqdec | Dezimaltabulator. |
\ tqr | Tabstopp rechtsbündig. |
\ tx n | Tabulatorposition in Twips Maßeinheiten, gemessen vom linken Rand. |
WÖRTER IM RTF-Zeichenformat
Steuerwort | Bedeutung |
---|---|
\ Animation n | Legt den Animationstyp auf n fest. |
\ b | Fettdruck |
\Mützen | Alle Großbuchstaben. |
\ cf n | Vordergrundfarbe (der Standardwert ist tomAutocolor). |
\ cs n | Zeichenformat n. |
\ dn n | Tiefgestellte Position in Halbpunkten (der Standardwert ist 6). |
\ embo | Geprägt. |
\ f n | Die Schriftartnummer n bezieht sich auf einen Eintrag in der Schriftarttabelle. |
\ fs n | Schriftgrad in halber Punkt (Der Standardwert ist 24). |
\ Hervorheben n | Hintergrundfarbe (der Standardwert ist tomAutocolor). |
\i | Kursiv. |
\ impr | Abdruck. |
\ lang n | Wendet eine Sprache auf ein Zeichen an. n ist eine Zahl, die einer Sprache entspricht. Das Wort "\ einfaches Steuerelement" setzt die Spracheigenschaft auf die von \ deflang n in den Dokumenteigenschaften definierte Sprache zurück. |
\ nosupersub | Deaktiviert hoch- oder tiefgestellt. |
\ outl | Umreißen. |
\einfach | Setzt Zeichenformatierungseigenschaften auf einen von der Anwendung definierten Standardwert zurück. Die zugeordneten Zeichenformatierungseigenschaften (die im Abschnitt "Associated Character Properties" in der RTF-Spezifikation beschrieben werden) werden ebenfalls zurückgesetzt. |
\ scaps | Kleine Großbuchstaben. |
\Maifisch | Schatten. |
\Schlag | Durchgestrichen. |
\sub | Wendet tiefgestellt auf Text an und reduziert den Schriftgrad entsprechend den Schriftinformationen. |
\super | Wendet hochgestellten Text an und reduziert die Schriftgröße gemäß den Schriftinformationen. |
\Ul | Fortlaufende Unterstreichung. \ ul0 deaktiviert alle Unterstreichungen. |
\ uld | Gepunktete Unterstreichung. |
\ uldb | Doppelte Unterstreichung. |
\ ulnone | Stoppt alle Unterstreichungen. |
\ ulw | Word-Unterstreichung. |
\ up n | Hochgestellter Text in halben Abständen (Der Standardwert beträgt 6). |
\ v | Ausgeblendeter Text. |
Suchen nach Rich-Text
Sie können TOM-Methoden verwenden, um Rich-Text zu finden, der durch einen Textbereich definiert ist. Die Suche nach einem solchen Rich-Text ist häufig in der Textverarbeitung erforderlich, obwohl sie nie in einem "was Sie sehen, was Sie bekommen" (WYSIWYG) Textverarbeitung erfüllt wurde. Es gibt eindeutig eine größere Domäne des Rich-Text-Abgleichs, mit der einige Zeichenformatierungseigenschaften ignoriert werden können (oder Absatzformatierungen und/oder Objektinhalte eingeschlossen werden sollen), aber solche Generalisierungen liegen außerhalb des Bereichs dieses Abschnitts.
Ein Zweck für diese Funktion besteht darin, ein Rich-Text-Dialogfeld " Suchen " zu verwenden, um den Rich-Text zu definieren, den Sie in einem Dokument suchen möchten. Das Dialogfeld würde mithilfe eines Rich-Edit-Steuerelements implementiert werden, und TOM-Methoden würden verwendet, um die Suche im Dokument zu erleichtern. Sie können entweder den gewünschten Rich-Text aus dem Dokument in das Dialogfeld " Suchen " kopieren oder direkt im Dialogfeld " Suchen " eingeben und formatieren.
Im folgenden Beispiel wird gezeigt, wie Sie TOM-Methoden verwenden, um Text zu finden, der Kombinationen aus exakter Zeichenformatierung enthält. Der Algorithmus sucht nach dem Klartext im Übereinstimmungsbereich, der pr1
genannt wird. Wenn der Klartext gefunden wird, wird er durch einen Testbereich gekennzeichnet, der pr2
benannt wird. Anschließend werden zwei Einfügemarkenbereiche (prip1
und prip2
) verwendet, um den Testbereich zu durchlaufen und die Zeichenformatierung mit der von pr1
zu vergleichen. Wenn sie exakt übereinstimmen, wird der Eingabebereich (angegeben von ppr
) aktualisiert, um auf den Text des Testbereichs zu zeigen, und die Funktion gibt die Anzahl der Zeichen im übereinstimmenden Bereich zurück. Zwei ITextFont-Objektepf1
und pf2
werden im Zeichenformatierungsvergleich verwendet. Sie sind an die Insertionspunktranges prip1
und prip2
befestigt.
LONG FindRichText (
ITextRange **ppr, // Ptr to range to search
ITextRange *pr1) // Range with rich text to find
{
BSTR bstr; // pr1 plain-text to search for
LONG cch; // Text string count
LONG cch1, cch2; // tomCharFormat run char counts
LONG cchMatch = 0; // Nothing matched yet
LONG cp; // Handy char position
LONG cpFirst1; // pr1 cpFirst
LONG cpFirst2; // pr2 cpFirst
ITextFont * pf1, *pf // Fonts corresponding to IPs prip1 and prip2
ITextRange *pr2; // Range duplicate to search with
ITextRange *prip1, *prip // Insertion points to walk pr1, pr2
if (!ppr || !*ppr || !pr1)
return E_INVALIDARG;
// Initialize range and font objects used in search
if ((*ppr)->GetDuplicate(&pr2) != NOERROR ||
pr1->GetDuplicate(&prip1) != NOERROR ||
pr2->GetDuplicate(&prip2) != NOERROR ||
prip1->GetFont(&pf1) != NOERROR ||
prip2->GetFont(&pf2) != NOERROR ||
pr1->GetText(&bstr) != NOERROR )
{
return E_OUTOFMEMORY;
}
pr1->GetStart(&cpFirst1);
// Keep searching till rich text is matched or no more plain-text hits
while(!cchMatch && pr2->FindText(bstr, tomForward, 0, &cch) == NOERROR)
{
pr2->GetStart(&cpFirst2); // pr2 is a new trial range
prip1->SetRange(cpFirst1, cpFirst1); // Set up IPs to scan match
prip2->SetRange(cpFirst2, cpFirst2); // and trial ranges
while(cch > 0 &&
pf1->IsEqual(pf2, NULL) == NOERROR) // Walk match & trial ranges
{ // together comparing font
prip1->GetStart(&cch1); // properties
prip1->Move(tomCharFormat, 1, NULL);
prip1->GetStart(&cp);
cch1 = cp - cch1; // cch of next match font run
prip2->GetStart(&cch2);
prip2->Move(tomCharFormat, 1, NULL);
prip2->GetStart(&cp);
cch2 = cp - cch2; // cch of next trial font run
if(cch1 < cch) // There is more to compare
{
if(cch1 != cch2) // Different run lengths:
break; // no formatting match
cch = cch - cch1; // Matched format run
}
else if(cch2 < cch) // Trial range format run too
break; // short
else // Both match and trial runs
{ // reach at least to match
pr2->GetEnd(&cp); // text end: rich-text match
(*ppr)->SetRange(cpFirst2, cp) // Set input range to hit
cchMatch = cp - cpFirst2; // coordinates and return
break; // length of matched string
}
}
}
pr2->Release();
prip1->Release();
prip2->Release();
pf1->Release();
pf2->Release();
SysFreeString(bstr);
return cchMatch;
}
TOM-Barrierefreiheit
TOM bietet Barrierefreiheitsunterstützung über die ITextSelection - und ITextRange-Schnittstellen . In diesem Abschnitt werden Methoden beschrieben, die für die Barrierefreiheit nützlich sind und wie ein Programm die x-, y-Bildschirmposition eines Objekts bestimmen kann.
Da benutzeroberflächenbasierte Barrierefreiheitsprogramme in der Regel mit dem Bildschirm und der Maus arbeiten, besteht ein häufiges Problem darin, die entsprechende ITextDocument-Schnittstelle für die aktuelle Mausposition (in Bildschirmkoordinaten) zu finden. In den folgenden Abschnitten werden zwei Möglichkeiten zum Ermitteln der richtigen Schnittstelle dargestellt:
- Über die Laufobjekttabelle
- Über die EM_GETOLEINTERFACE Nachricht, die für Fenster-basierte Rich-Edit-Instanzen funktioniert, vorausgesetzt, der Client befindet sich im selben Prozessraum (es ist kein Marshaling erforderlich)
Weitere Informationen finden Sie in der Microsoft Active Accessibility-Spezifikation. Nachdem Sie ein Objekt von einer Bildschirmposition abgerufen haben, können Sie für eine ITextDocument-Schnittstelle verwenden und die RangeFromPoint-Methode aufrufen, um ein leeres Bereichsobjekt an der cp abzurufen, das der Bildschirmposition entspricht.
Schnittstelle der laufenden Objekttabelle
Eine ausgeführte Objekttabelle (ROT) teilt mit, welche Objektinstanzen aktiv sind. Durch Abfragen dieser Tabelle können Sie den Prozess der Verbindung eines Clients mit einem Objekt beschleunigen, wenn das Objekt bereits ausgeführt wird. Bevor Programme über die ausgeführte Objekttabelle auf TOM-Schnittstellen zugreifen können, muss eine TOM-Instanz mit einem Fenster mithilfe eines Monikers im ROT registriert werden. Sie erstellen den Moniker aus einer Zeichenfolge, die den Hexadezimalwert seines HWND enthält. Im folgenden Codebeispiel wird gezeigt, wie dies funktioniert.
// This TOM implementation code is executed when a new windowed
// instance starts up.
// Variables with leading underscores are members of this class.
HRESULT hr;
OLECHAR szBuf[10]; // Place to put moniker
MONIKER *pmk;
hr = StringCchPrintf(szBuff, 10, "%x", _hwnd);
if (FAILED(hr))
{
//
// TODO: write error handler
//
}
CreateFileMoniker(szBuf, &pmk);
OleStdRegisterAsRunning(this, pmk, &_dwROTcookie);
....................
// Accessibility Client:
// Find hwnd for window pointed to by mouse cursor.
GetCursorPos(&pt);
hwnd = WindowFromPoint(pt);
// Look in ROT (running object table) for an object attached to hwnd
hr = StringCchPrintf(szBuff, 10, "%x", hwnd);
if (FAILED(hr))
{
//
// TODO: write error handler
//
}
CreateFileMoniker(szBuf, &pmk);
CreateBindContext(0, &pbc);
pmk->BindToObject(pbc, NULL, IID_ITextDocument, &pDoc);
pbc->Release();
if( pDoc )
{
pDoc->RangeFromPoint(pt.x, pt.y, &pRange);
// ...now do whatever with the range pRange
}
Schnittstelle aus Fenstermeldungen
Die EM_GETOLEINTERFACE Nachricht bietet eine weitere Möglichkeit, eine IUnknown-Schnittstelle für ein Objekt an einer bestimmten Bildschirmposition abzurufen. Wie in "Interface from Running Object Table" beschrieben, erhalten Sie einen HWND für die Bildschirmposition und senden diese Nachricht dann an diesen HWND. Die EM_GETOLEINTERFACE-Nachricht ist speziell für Rich-Edit und gibt einen Zeiger auf eine IRichEditOle-Schnittstelle in der Variablen zurück, die von lParam adressiert wird.
Hinweis: Wenn ein Zeiger zurückgegeben wird (stellen Sie sicher, dass lParam vor dem Senden der Nachricht auf null gesetzt wird), können Sie die Methode IUnknown::QueryInterface aufrufen, um eine ITextDocument-Schnittstelle zu erhalten. Das folgende Codebeispiel veranschaulicht diese Vorgehensweise.
HWND hwnd;
ITextDocument *pDoc;
ITextRange *pRange;
POINT pt;
IUnknown *pUnk = NULL;
GetCursorPos(&pt);
hwnd = WindowFromPoint(pt);
SendMessage(hwnd, EM_GETOLEINTERFACE, 0, (LPARAM)&pUnk);
if(pUnk &&
pUnk->QueryInterface(IID_ITextDocument, &pDoc) == NOERROR)
{
pDoc->RangeFromPoint(pt.x, pt.y, &pRange);
// ... continue with rest of program
}
Barrierefreiheitsorientierte Methoden
Einige TOM-Methoden sind besonders nützlich für die Navigation auf dem Bildschirm, während andere TOM-Methoden verbessern, was Sie tun können, wenn Sie an interessanten Orten ankommen. In der folgenden Tabelle werden die nützlichsten Methoden beschrieben.
Methode | Wie es die Barrierefreiheit fördert |
---|---|
GetSelection- | Diese Methode ermittelt die aktive Auswahl, die für eine Vielzahl von ansichtsorientierten Zwecken verwendet werden kann, z. B. Hervorheben von Text und Scrollen. |
RangeFromPoint- | Wenn diese Methode für eine aktive Auswahl verwendet wird, wird garantiert ein Bereich abgerufen, der einer bestimmten Ansicht zugeordnet ist. |
erweitern | Vergrößert einen Textbereich so, dass alle darin enthaltenen Teileinheiten vollständig enthalten sind. Erweitert z. B. den Bereich, Expand(tomWindow) um den sichtbaren Teil des Bereichsabschnitts einzuschließen. |
GetDuplicate | Wenn diese Methode für eine aktive Auswahl verwendet wird, wird garantiert ein Bereich abgerufen, der einer bestimmten Ansicht zugeordnet ist. Weitere Informationen finden Sie in der Beschreibung von RangeFromPoint. |
GetPoint | Ruft die Bildschirmkoordinaten für die Start- oder Endzeichenposition im Textbereich ab. |
ScrollIntoView- | Scrollt einen Textbereich in die Ansicht. |
Sollwert | Markiert Text bis zu einem angegebenen Punkt. |
Zeichen-Übereinstimmungssätze
Der Variant-Parameter der verschiedenen Move*-Methoden in ITextRange, z. B. MoveWhile und MoveUntil, kann eine bestimmte Zeichenfolge oder einen 32-Bit-Index für die Zeichenanpassung verwenden. Die Indizes werden entweder durch Unicode-Bereiche oder GetStringTypeEx-Zeichensätze definiert. Der Unicode-Bereich beginnt bei n und hat die Länge l (< 32768) und wird durch den Index n + (l << 16) + 0x80000000 angegeben. Beispielsweise werden grundlegende griechische Buchstaben durch CR_Greek = 0x805f0370 und druckbare ASCII-Zeichen durch CR_ASCIIPrint = 0x805e0020 definiert. Darüber hinaus können Sie mit den Methoden MoveWhile und MoveUntil schnell einen Bereich von Zeichen in einem beliebigen GetStringTypeEx-Zeichensatz oder in einer Reihe von Zeichensätzen umgehen, die sich nicht in einem dieser Zeichensätze befindet.
Die GetStringTypeEx-Sätze werden durch die Werte für Ctype1, Ctype2 und Ctype3 angegeben und werden wie folgt definiert.
Cset | Bedeutung |
---|---|
Ctype1 | Kombination von CT_CTYPE1-Typen. |
Ctype2 + tomCType2 | Jeder CT_CTYPE2-Typ. |
Ctype3 + tomCType3 | Kombination von CT_CTYPE3-Typen. |
Insbesondere kann Ctype1 eine beliebige Kombination der folgenden Sein.
Ctype1-Name | Wert | Bedeutung |
---|---|---|
C1_UPPER | 0x0001 | Großschrift. |
C1_LOWER | 0x0002 | Kleingeschrieben. |
C1_DIGIT | 0x0004 | Dezimalstellen. |
C1_SPACE | 0x0008 | Leerzeichen. |
C1_PUNCT | 0x0010 | Interpunktion. |
C1_CNTRL | 0x0020 | Steuerzeichen. |
C1_BLANK | 0x0040 | Leere Zeichen. |
C1_XDIGIT | 0x0080 | Hexadezimalziffern. |
C1_ALPHA | 0x0100 | Beliebiges sprachliches Zeichen (alphabetisch, Silbenschrift oder ideographisch). |
C1_DEFINED | 0x0200 | Ein definiertes Zeichen, jedoch keins der anderen C1_*-Typen. |
Die Ctype2-Typen unterstützen das richtige Layout von Unicode-Text. Die Richtungsattribute werden zugewiesen, sodass der von Unicode standardisierte bidirektionale Layoutalgorithmus genaue Ergebnisse erzeugt. Diese Typen schließen sich gegenseitig aus. Weitere Informationen zur Verwendung dieser Attribute finden Sie unter Unicode Standard: Worldwide Character Encoding, Volumes 1 und 2, Addison-Wesley Publishing Company: 1991, 1992.
CType2-Name | Wert | Bedeutung |
---|---|---|
Stark: | ||
C2_LEFTTORIGHT | 0x1 | Von links nach rechts. |
C2_RECHTSNACHLINKS | 0x2 | Von rechts nach links. |
Schwach: | ||
C2_EUROPENUMBER | 0x3 | Europäische Zahl, europäische Ziffer. |
C2_EUROPESEPARATOR | 0x4 | Europäisches numerisches Trennzeichen. |
C2_EUROPETERMINATOR | 0x5 | Europäischer numerischer Terminator. |
C2_ARABICNUMBER | 0x6 | Arabische Nummer. |
C2_COMMONSEPARATOR | 0x7 | Allgemeines numerisches Trennzeichen. |
Neutral: | ||
C2_BLOCKSEPARATOR | 0x8 | Blocktrennzeichen. |
C2_SEGMENTSEPARATOR | 0x9 | Segmenttrennzeichen. |
C2_WHITESPACE | 0xA | Leerraum. |
C2_OTHERNEUTRAL | 0xB | Andere Neutrale. |
Nicht zutreffend: | ||
C2_NOTAPPLICABLE | 0x0 | Keine implizite Richtung. |
Die Ctype3-Typen sollen Platzhalter für Erweiterungen der POSIX-Typen sein, die für die allgemeine Textverarbeitung oder für die C-Standardbibliotheksfunktionen erforderlich sind.
CType3-Name | Wert | Bedeutung |
---|---|---|
C3_NONSPACING | 0x1 | Nicht-positionierendes Zeichen. |
C3_DIACRITIC | 0x2 | Diakritisches nichtabstandsbildendes Zeichen. |
C3_VOWELMARK | 0x4 | Vokal-nichttrennendes Zeichen. |
C3_SYMBOL | 0x8 | Symbol. |
C3_KATAKANA | 0x10 | Katakana-Zeichen. |
C3_HIRAGANA | 0x20 | Hiragana-Zeichen. |
C3_HalbeBreite | 0x40 | Zeichen mit halber Breite. |
C3_FULLWIDTH | 0x80 | Zeichen mit voller Breite. |
C3_Ideogramm | 0x100 | Ideografisches Zeichen. |
C3_KASHIDA | 0x200 | Arabisches Kashida-Zeichen. |
C3_ALPHA | 0x8000 | Alle sprachlichen Zeichen (alphabetisch, silbisch und ideografisch). |
C3_NICHTZUTREFFEND | 0x0 | Nicht zutreffend. |
Ein Edit Development Kit (EDK) könnte pVar-Indexdefinitionen für die folgenden Bereiche enthalten, die im Unicode-Standard beschrieben sind.
Zeichensatz | Unicode-Bereich | Zeichensatz | Unicode-Bereich |
---|---|---|---|
ASCII | 0x0 – 0x7f | ANSI (Amerikanisches Institut für Normung) | 0x0 – 0xff |
ASCIIPrint | 0x20 – 0x7e | Lateinisch1 | 0x20 – 0xff |
Latin1Supp | 0xa0 – 0xff | LatinXA | 0x100 – 0x17f |
LateinischXB | 0x180 – 0x24f | IPAX | 0x250 – 0x2af |
SpaceMod | 0x2b0 – 0x2ff | Kombinierend | 0x300 – 0x36f |
Griechisch | 0x370 – 0x3ff | BasicGreek | 0x370 – 0x3cf |
GreekSymbols | 0x3d0 – 0x3ff | Kyrillisch | 0x400 – 0x4ff |
Armenisch | 0x530 – 0x58f | Hebräisch | 0x590 – 0x5ff |
BasicHebrew | 0x5d0 – 0x5ea | HebräischXA | 0x590 – 0x5cf |
HebräischXB | 0x5eb – 0x5ff | Arabisch | 0x600 – 0x6ff |
BasicArabic | 0x600 – 0x652 | ArabicX | 0x653 – 0x6ff |
Devanagari | 0x900 – 0x97f | Bangla | 0x980 – 0x9ff |
Gurmukhi | 0xa00 – 0xa7f | Gujarati | 0xa80 – 0xaff |
Odia | 0xb00 – 0xb7f | Tamilisch | 0xb80 – 0xbff |
Teluga | 0xc00 – 0xc7f | Kannada | 0xc80 – 0xcff |
Malayalam | 0xd00 – 0xd7f | Thailändisch | 0xe00 – 0xe7f |
Laotisch | 0xe80 – 0xeff | GeorgianX | 0x10a0 – 0xa0cf |
BascGeorgian | 0x10d0 – 0x10ff | Jamo | 0x1100 – 0x11ff |
LatinXAdd | 0x1e00 – 0x1eff | GreekX | 0x1f00 – 0x1fff |
GenPunct | 0x2000 – 0x206f | Hochgestellt | 0x2070 – 0x207f |
Tiefgestellt | 0x2080 – 0x208f | Hochsubscript | 0x2070 – 0x209f |
Währung | 0x20a0 – 0x20cf | CombMarkSym | 0x20d0 – 0x20ff |
LetterLike | 0x2100 – 0x214f | NumberForms | 0x2150 – 0x218f |
Pfeile | 0x2190 – 0x21ff | MathOps | 0x2200 – 0x22ff |
MiscTech | 0x2300 – 0x23ff | StrgBilder | 0x2400 – 0x243f |
OptCharRecog | 0x2440 – 0x245f | EnclAlphaNum | 0x2460 – x24ff |
Box-Zeichnung | 0x2500 – 0x257f | Blockelement | 0x2580 – 0x259f |
GeometShapes | 0x25a0 – 0x25ff | Verschiedene Symbole | 0x2600 – 0x26ff |
Dingbats | 0x2700 – 0x27bf | CJKSymPunct | 0x3000 – 0x303f |
Hiragana | 0x3040 – 0x309f | Katakana | 0x30a0 – 0x30ff |
Bopomofo | 0x3100 – 0x312f | HangulJamo | 0x3130 – 0x318f |
CJLMisc | 0x3190 – 0x319f | EnclCJK | 0x3200 – 0x32ff |
CJKCompatibl | 0x3300 – 0x33ff | Han | 0x3400 – 0xabff |
Hangul | 0xac00 – 0xd7ff | UTF16Lead | 0xd800 – 0xdbff |
UTF16Trail | 0xdc00 – 0xdfff | Privatnutzung | 0xe000 – 0xf800 |
CJKCompIdeog | 0xf900 – 0xfaff | AlphaPres | 0xfb00 – 0xfb4f |
ArabicPresA | 0xfb50 – 0xfdff | CombHalfMark | 0xfe20 – 0xfe2f |
CJKCompForm | 0xfe30 – 0xfe4f | SmallFormVar | 0xfe50 – 0xfe6f |
ArabicPresB | 0xfe70 – 0xfefe | HalfFullForm | 0xff00 – 0xffef |
Besonderheiten | 0xfff0 – 0xfffd |