Informationen zum Textobjektmodell
Das Text object Model (TOM) definiert eine Reihe von Textbearbeitungsschnittstellen, die in unterschiedlichem Maße von mehreren Microsoft-Textlösungen unterstützt werden, einschließlich des umfangreichen Bearbeitungssteuerelements. Dieses Thema bietet eine allgemeine Übersicht über das Inhaltsverzeichnis. Es werden die folgenden Themen erläutert.
- TOM Version 2-Objekte
- TOM-Schnittstellenkonventionen
- Der tomBool-Typ
- Mathematischer Aufbau und Aufbau
- 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 bietet Unterstützung für neue Zeichen- und Absatzformateigenschaften, ein Tabellenmodell, Mehrfachauswahl und Inlineobjektunterstützung für Mathematik und Ruby.
Das TOM 2-Objekt der obersten Ebene wird von der ITextDocument2-Schnittstelle definiert, die Methoden zum Erstellen und Abrufen von Objekten in der Objekthierarchie enthält. Für die 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-Formatierungen hinzufügen müssen, können Sie ITextFont2 - und ITextPara2-Objekte aus einem ITextRange2-Objekt abrufen. ITextFont2 stellt das Programmieräquivalent des Dialogfelds "Format-Schriftart" von Microsoft Word bereit, und ITextPara2 stellt das Äquivalent des dialogfelds Word Formatabsatz bereit.
Zusätzlich zu diesen drei Objekten auf niedrigerer Ebene verfügt TOM 2 über ein Auswahlobjekt (ITextSelection2), bei dem es sich um ein ITextRange2-Objekt mit Auswahlherunterhebung und einigen UI-orientierten Methoden handelt.
Die Bereichs- und Auswahlobjekte umfassen bildschirmorientierte Methoden, mit denen Programme Text auf dem Bildschirm oder Text untersuchen können, der auf den Bildschirm scrollen kann. Diese Funktionen helfen beispielsweise, Text für Menschen mit Sehbehinderung 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 Stories bezeichnet werden. Storys stellen verschiedene Teile eines Dokuments dar, z. B. den Standard Text des Dokuments, Kopf- und Fußzeilen, Fußnoten, Anmerkungen und Rich-Text-Scratchpads. Bei der Übersetzung zwischen linear formatierten mathematischen Ausdrücken und einem integrierten Formular wird ein Scratchpad-Story verwendet. Ein Scratchpad-Story wird auch verwendet, wenn der Inhalt eines Bereichs gespeichert wird, der die aktuelle Kopierquelle ist, wenn der Inhalt geändert werden soll.
Ein ITextRange2-Objekt wird durch seine Anfangs- und Endzeichenpositionsoffsets und ein Story-Objekt definiert. Es ist nicht unabhängig von seinem übergeordneten Storyobjekt vorhanden, 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. z. B. Zeile/Spalte oder Grafikposition (x, y). Ein Textbereichsobjekt kann sich auf verschiedene Weise ändern, ein Duplikat von sich selbst zurückgeben, und es kann aufgefordert werden, seine Anfangs- und Endzeichenpositionen und seinen Story-Zeiger auf die aktuelle Auswahl zu kopieren.
Ein explizites Story-Objekt ist nicht erforderlich, da ein ITextRange-Objekt immer erstellt werden kann, um eine bestimmte Story darzustellen. Insbesondere kann das ITextDocument-Objekt ein ITextStoryRanges-Objekt erstellen, um die Storys im Dokument in Bezug auf Bereiche mit Anfangs- und Endzeichenpositionswerten aufzulisten, die vollständige Geschichten beschreiben (z. B. 0 und tomForward).
Bei einem ITextStoryRanges2-Objekt ist kein explizites Storyobjekt erforderlich, da die einzelnen Storys von einem ITextRange2-Objekt beschrieben werden. Insbesondere kann das ITextDocument2-Objekt ein ITextStoryRanges2-Objekt erstellen, um die Storys im Dokument in Bezug auf Bereiche mit Anfangs- und Endzeichenpositionswerten aufzulisten, die vollständige Geschichten beschreiben (z. B. 0 und tomForward).
Die ITextRow-Schnittstelle zusammen mit den Methoden ITextRange::Move und ITextRange::Expand ermöglicht 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, dass das TOM-Objekt nutzlos wird, wenn die bearbeitungsbezogene instance, die einem TOM-Objekt wie ITextRange zugeordnet ist, gelöscht wird, und alle seine Methoden CO_E_RELEASED zurückgeben.
Zusätzlich zu den HRESULT-Rückgabewerten enthalten viele Methoden out-Parameter, bei denen es sich um Zeiger handelt, die zum Zurückgeben von Werten verwendet werden. Für alle Schnittstellen sollten Sie alle Zeigerparameter überprüfen, um sicherzustellen, dass sie ungleich 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 Out-Zeiger 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 Typ von Variablen namens "tomBool" für Rich-Text-Attribute mit binären Zuständen. Der TomBool-Typ unterscheidet sich vom booleschen Typ, da er vier Werte annehmen kann: tomTrue, tomFalse, tomToggle und tomUndefined. Die Werte tomTrue und tomFalse geben true und false an. Der tomToggle-Wert wird verwendet, um eine Eigenschaft umzuschalten. Der tomUndefined-Wert , üblicher als NINCH bezeichnet, ist ein spezieller No-Input-, No-Change-Wert, der mit Longs, floats und COLORREFs funktioniert. Bei Zeichenfolgen wird tomUndefined (oder NINCH) durch die NULL-Zeichenfolge dargestellt. Bei Eigenschafteneinstellungsvorgängen ändert die Verwendung von tomUndefined nicht die Zieleigenschaft. Bei Vorgängen zum Abrufen von Eigenschaften bedeutet tomUndefined , dass die Zeichen im Bereich unterschiedliche Werte aufweisen (es wird das abgeblendete Kontrollkästchen in Eigenschaftendialogfeldern angezeigt).
Mathematischer Aufbau und Aufbau
Sie können die ITextRange2::BuildUpMath-Methode verwenden, um linear formatierte mathematische Ausdrücke in integrierte Versionen zu konvertieren. Die ITextRange2::Linearize-Methode führt die entgegengesetzte Konvertierung durch, die als Linearisierung oder Builddown bezeichnet wird, um erstellte Versionen von mathematischen Ausdrücken wieder in das lineare 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 Sätze 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 Paragraph Control Wörter
Steuerelementwort | Bedeutung |
---|---|
\ fi n | Erstzeileneinzug (der Standardwert ist 0). |
\Halten | Der Absatz bleibt erhalten. |
\ keepn | Behalten Sie den nächsten Absatz bei. |
\ li n | Linker Einzug (der Standardwert ist 0). |
\ noline | Keine Zeilennummerierung. |
\ nowidctlpar | Deaktivieren Sie das witwen-/verwaiste Steuerelement. |
\ pagebb | Seite vor Absatz umbrechen. |
\Par | Neuer Absatz. |
\ pard | Wird auf Standardabsatzeigenschaften zurückgesetzt. |
\Ql | Linksbündig (Standard). |
\Qr | Rechtsbündig. |
\Qj | Blocksatz. |
\Qc | Zentriert. |
\ ri n | Rechtseinzug (der Standardwert ist 0). |
\ s n | Format n. |
\ sa n | Leerzeichen nach (der Standardwert ist 0). |
\ sb n | Leerzeichen vor (der Standardwert ist 0). |
\ sl n | Wenn der Zeilenabstand fehlt oder n=1000 ist, wird der Zeilenabstand durch das höchste Zeichen in der Zeile bestimmt (einzeilige Abstände); wenn n> null, wird mindestens diese Größe verwendet; wenn n null ist < , genau | n| wird verwendet. Der Zeilenabstand ist mehrzeilig, wenn \slmult 1 folgt. |
\ slmult m | Folgt \sl. m = null: Mindestens oder Genau Zeilenabstand, wie von \ sl n beschrieben. m = 1: Zeilenabstand = n/240 mal einzeiligen Abstand. |
\ tb n | Position der Balkenregisterkarte in Twips vom linken Rand. |
\ tldot | Registerkartenführerpunkte. |
\ tleq | Tabulatorleiter gleich Vorzeichen. |
\ tlhyph | Tabstopp-Bindestriche. |
\ tlth | Registerkartenführer dicke Linie. |
\ tlul | Unterstreichung der Registerkartenleiter. |
\Tqc | Zentrierte Registerkarte. |
\ tqdec | Registerkarte "Dezimal" |
\ tqr | Registerkarte "Rechts leer". |
\ tx n | Tabulatorposition in Twips vom linken Rand. |
TOM RTF-Zeichenformat-Steuerelementwörter
Wort steuern | Bedeutung |
---|---|
\ animation n | Legt den Animationstyp auf n fest. |
\B | Fettdruck |
\Caps | 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 Halbpunkten (Standardwert ist 24). |
\ highlight n | Hintergrundfarbe (die Standardeinstellung ist tomAutocolor). |
\Ich | Italic. |
\Impr | Impressum. |
\ lang n | Wendet eine Sprache auf ein Zeichen an. n ist eine Zahl, die einer Sprache entspricht. Das Einfache Steuerelementwort \ setzt die Spracheigenschaft auf die Sprache zurück, die in den Dokumenteigenschaften durch \deflang n definiert ist. |
\ nosupersub | Deaktiviert hoch- oder tiefgestellt. |
\ outl | Umriss. |
\einfach | Setzt Zeichenformatierungseigenschaften auf einen von der Anwendung definierten Standardwert zurück. Die zugeordneten Zeichenformatierungseigenschaften (beschrieben im Abschnitt Zugeordnete Zeicheneigenschaften in der RTF-Spezifikation) werden ebenfalls zurückgesetzt. |
\ scaps | Kleine Großbuchstaben. |
\Shad | Schatten. |
\Schlag | Durchgestrichen. |
\Sub | Wendet tiefgestellten Text an und reduziert die Punktgröße entsprechend den Schriftartinformationen. |
\Super | Wendet Hochgestellt auf Text an und reduziert die Punktgröße entsprechend den Schriftartinformationen. |
\Ul | Kontinuierliche Unterstreichung. \ ul0 deaktiviert alle Unterstreichungen. |
\Uld | Punktierte Unterstreichung. |
\ uldb | Doppelte Unterstreichung. |
\ ulnone | Beendet alle Unterstreichungen. |
\ ulw | Word unterstrichen. |
\ bis n | Hochgestellte Position in Halbpunkten (Der Standardwert ist 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 genaue Suche nach einem solchen Rich-Text wird in der Textverarbeitung häufig benötigt, obwohl es in einer WySIWYG-Textverarbeitung (Was Sie sehen, was Sie sehen, was Sie erhalten) noch nie erfüllt wurde. Es gibt eindeutig eine größere Domäne des Rich-Text-Abgleichs, die es ermöglicht, dass einige Zeichenformatierungseigenschaften ignoriert werden (oder Absatzformatierung und/oder Objektinhalt eingeschlossen werden), aber solche Generalisierungen sprengen den Bereich dieses Abschnitts.
Ein Zweck für diese Funktion besteht darin, ein Rich-Text-Suchen-Dialogfeld zu verwenden, um den Rich-Text zu definieren, den Sie in einem Dokument suchen möchten. Das Dialogfeld wird mithilfe eines Rich-Edit-Steuerelements implementiert, und TOM-Methoden würden verwendet, um die Suche durch das Dokument durchzuführen. Sie können entweder den gewünschten Rich-Text aus dem Dokument in das Dialogfeld Suchen kopieren oder ihn direkt im Dialogfeld Suchen eingeben und formatieren.
Im folgenden Beispiel wird gezeigt, wie Sie mithilfe von TOM-Methoden nach Text suchen, der Kombinationen der exakten Zeichenformatierung enthält. Der Algorithmus sucht den Nur-Text im Übereinstimmungsbereich mit dem Namen pr1
. Wenn der Nur-Text gefunden wird, wird von einem Testbereich mit dem Namen pr2
darauf verwiesen. Anschließend werden zwei Einfügemarkesbereiche (prip1
und prip2
) verwendet, um den Testbereich zu durchlaufen, um seine Zeichenformatierung mit der von pr1
zu vergleichen. Wenn sie genau übereinstimmen, wird der Eingabebereich (angegeben durch ppr
) aktualisiert, um auf den Text des Testbereichs zu verweisen, und die Funktion gibt die Anzahl der Zeichen im übereinstimmenden Bereich zurück. Beim Vergleich der Zeichenformatierung werden zwei ITextFont-Objektepf1
und pf2
verwendet. Sie sind an die Einfügemarkesbereiche prip1
und prip2
angefügt.
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 Unterstützung für Barrierefreiheit über die Schnittstellen ITextSelection und ITextRange . 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 beschrieben:
- Über die Tabelle running-object
- Über die EM_GETOLEINTERFACE-Nachricht , die für Rich-Edit-Instanzen mit Fenstern funktioniert, vorausgesetzt, der Client befindet sich im selben Prozessbereich (kein Marshalling ist erforderlich).
Weitere Informationen finden Sie in der Microsoft Active-Barrierefreiheitsspezifikation. Nachdem Sie ein Objekt aus einer Bildschirmposition abgerufen haben, können Sie für eine ITextDocument-Schnittstelle verwenden und die RangeFromPoint-Methode aufrufen, um ein leeres Bereichsobjekt am cp zu erhalten, das der Bildschirmposition entspricht.
Schnittstelle aus ausführenden Objekttabellen
Eine laufende Objekttabelle (ROT) gibt an, 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 ein TOM-instance mit einem Fenster in der ROT-Instanz mit einem Moniker registriert werden. Sie erstellen den Moniker aus einer Zeichenfolge, die den Hexadezimalwert ihres HWND enthält. Im folgenden Codebeispiel wird gezeigt, wie dies geschieht.
// 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 Meldung bietet eine weitere Möglichkeit, eine IUnknown-Schnittstelle für ein Objekt an einer bestimmten Bildschirmposition abzurufen. Wie unter Interface from Running Object Table beschrieben, erhalten Sie eine HWND für die Bildschirmposition und senden diese Nachricht dann an diese HWND. Die EM_GETOLEINTERFACE Nachricht ist rich edit-specific und gibt einen Zeiger auf eine IRichEditOle-Schnittstelle in der Variablen zurück, die von lParam adressiert wird.
Tipp Wenn ein Zeiger zurückgegeben wird (stellen Sie sicher, dass Sie das Objekt festlegen, auf das lParam vor dem Senden der Nachricht auf NULL zeigt), können Sie die IUnknown::QueryInterface-Methode aufrufen, um eine ITextDocument-Schnittstelle abzurufen. 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 Sehenswürdigkeiten ankommen. In der folgenden Tabelle werden die nützlichsten Methoden beschrieben.
Methode | Wie sie die Barrierefreiheit fördert |
---|---|
GetSelection | Diese Methode ruft die aktive Auswahl ab, die für eine Vielzahl von ansichtsorientierten Zwecken verwendet werden kann, z. B. textmarkieren und scrollen. |
RangeFromPoint | Bei Verwendung für eine aktive Auswahl erhält diese Methode garantiert einen Bereich, der einer bestimmten Ansicht zugeordnet ist. |
Expand | Vergrößert einen Textbereich, sodass alle darin enthaltenen Teileinheiten vollständig enthalten sind. Erweitert beispielsweise den Bereich, Expand(tomWindow) um den sichtbaren Teil der Geschichte des Bereichs einzuschließen. |
GetDuplicate | Bei Verwendung für eine aktive Auswahl erhält diese Methode garantiert einen Bereich, 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 | Wählt Text an oder bis zu einem angegebenen Punkt aus. |
Zeichensätze
Der Variant-Parameter der verschiedenen Move*-Methoden in ITextRange, z. B. MoveWhile und MoveUntil, kann eine explizite Zeichenfolge oder einen 32-Bit-Zeichensatz-Index annehmen. Die Indizes werden entweder durch Unicode-Bereiche oder GetStringTypeEx-Zeichensätze definiert. Der Unicode-Bereich ab n und der Länge l (< 32768) wird durch den Index n + (l << 16) + 0x80000000 angegeben. Beispielsweise werden grundlegende griechische Buchstaben durch CR_Greek = 0x805f0370 definiert, und druckbare ASCII-Zeichen werden durch CR_ASCIIPrint = 0x805e0020 definiert. Darüber hinaus können Sie mit den Methoden MoveWhile und MoveUntil eine Spanne von Zeichen in jedem GetStringTypeEx-Zeichensatz oder in einer Spanne von Zeichen, die sich in keinem dieser Zeichensätze befindet, schnell umgehen.
Die GetStringTypeEx-Sätze werden durch die Werte für Ctype1, Ctype2 und Ctype3 angegeben und wie folgt definiert.
Cset | Bedeutung |
---|---|
Ctype1 | Kombination von CT_CTYPE1 Typen. |
Ctype2 + tomCType2 | Ein beliebiger 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ßbuchstaben. |
C1_LOWER | 0x0002 | Kleinbuchstaben. |
C1_DIGIT | 0x0004 | Dezimalstellen. |
C1_SPACE | 0x0008 | Leerzeichen. |
C1_PUNCT | 0x0010 | Interpunktion. |
C1_CNTRL | 0x0020 | Steuerzeichen. |
C1_BLANK | 0x0040 | Leere Zeichen. |
C1_XDIGIT | 0x0080 | Hexadezimalstellen. |
C1_ALPHA | 0x0100 | Beliebige linguistische Zeichen (alphabetisch, silbenhaft oder ideografisch). |
C1_DEFINED | 0x0200 | Ein definiertes Zeichen, aber nicht einer der anderen C1_*-Typen. |
Die Ctype2-Typen unterstützen das richtige Layout von Unicode-Text. Die Richtungsattribute werden zugewiesen, sodass der bidirektionale Layoutalgorithmus, der von Unicode standardisiert ist, genaue Ergebnisse erzeugt. Diese Typen schließen sich gegenseitig aus. Weitere Informationen zur Verwendung dieser Attribute finden Sie unter The Unicode Standard: Worldwide Character Encoding, Volume 1 and 2, Addison-Wesley Publishing Company: 1991, 1992.
CType2-Name | Wert | Bedeutung |
---|---|---|
Stark: | ||
C2_LEFTTORIGHT | 0x1 | Von links nach rechts. |
C2_RIGHTTOLEFT | 0x2 | Von rechts nach links. |
Schwach: | ||
C2_EUROPENUMBER | 0x3 | Europäische Nummer, europäische Ziffer. |
C2_EUROPESEPARATOR | 0x4 | Europäisches numerisches Trennzeichen. |
C2_EUROPETERMINATOR | 0x5 | Europäischer numerischer Abschluss. |
C2_ARABICNUMBER | 0x6 | Arabische Zahl. |
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 sind als Platzhalter für Erweiterungen der POSIX-Typen vorgesehen, die für die allgemeine Textverarbeitung oder für die Standardfunktionen der C-Bibliothek erforderlich sind.
CType3-Name | Wert | Bedeutung |
---|---|---|
C3_NONSPACING | 0x1 | Nonspacing-Markierung. |
C3_DIACRITIC | 0x2 | Diakritisches Nonspacing-Zeichen. |
C3_VOWELMARK | 0x4 | Vokal-Nonspacing-Markierung. |
C3_SYMBOL | 0x8 | Symbol. |
C3_KATAKANA | 0x10 | Katakana-Zeichen. |
C3_HIRAGANA | 0x20 | Hiragana-Zeichen. |
C3_HALFWIDTH | 0x40 | Zeichen mit halber Breite. |
C3_FULLWIDTH | 0x80 | Zeichen mit voller Breite. |
C3_IDEOGRAPH | 0x100 | Ideografisches Zeichen. |
C3_KASHIDA | 0x200 | Arabisches Kashida-Zeichen. |
C3_ALPHA | 0x8000 | Alle linguistischen Zeichen (alphabetisch, silbenhaft und ideografisch). |
C3_NOTAPPLICABLE | 0x0 | Nicht zutreffend |
Ein Edit Development Kit (EDK) kann pVar-Indexdefinitionen für die folgenden bereiche enthalten, die im Unicode-Standard beschrieben sind.
Zeichensatz | Unicode-Bereich | Zeichensatz | Unicode-Bereich |
---|---|---|---|
ASCII | 0x0 – 0x7f | ANSI | 0x0 – 0xff |
ASCIIPrint | 0x20 – 0x7e | Lateinisch1 | 0x20 – 0xff |
Latin1Supp | 0xa0 – 0xff | LatinXA | 0x100 – 0x17f |
LatinXB | 0x180 – 0x24f | IPAX | 0x250 – 0x2af |
SpaceMod | 0x2b0 – 0x2ff | Kombination | 0x300 – 0x36f |
Griechisch | 0x370 – 0x3ff | BasicGreek | 0x370 – 0x3cf |
GreekSymbols | 0x3d0 – 0x3ff | Kyrillisch | 0x400 – 0x4ff |
Armenisch | 0x530 – 0x58f | Hebräisch | 0x590 – 0x5ff |
BasicHebrew | 0x5d0 – 0x5ea | HebrewXA | 0x590 – 0x5cf |
HebräischXB | 0x5eb – 0x5ff | Arabisch | 0x600 – 0x6ff |
BasicArabic | 0x600 – 0x652 | ArabicX | 0x653 – 0x6ff |
Devangari | 0x900 – 0x97f | Bangla (ehemals bengalisch) | 0x980 – 0x9ff |
Gurmukhi | 0xa00 – 0xa7f | Gujarati | 0xa80 – 0xaff |
Odia (ehemals Oriya) | 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 | SuperSubscript | 0x2070 – 0x209f |
Währung | 0x20a0 – 0x20cf | CombMarkSym | 0x20d0 – 0x20ff |
Letterlike | 0x2100 – 0x214f | NumberForms | 0x2150 – 0x218f |
Pfeile | 0x2190 – 0x21ff | MathOps | 0x2200 – 0x22ff |
MiscTech | 0x2300 – 0x23ff | STRGPictures | 0x2400 – 0x243f |
OptCharRecog | 0x2440 – 0x245f | EnclAlphanum | 0x2460 – x24ff |
BoxDrawing | 0x2500 – 0x257f | BlockElement | 0x2580 – 0x259f |
GeometShapes | 0x25a0 – 0x25ff | MiscSymbols | 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 | PrivateUse | 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 |
Specials | 0xfff0 – 0xfffd |