Informationen zum Textobjektmodell
Das Textobjektmodell (Tom) definiert eine Reihe von Textbearbeitungsschnittstellen, die von verschiedenen Microsoft-Textlösungen unterstützt werden, einschließlich des Rich Edit-Steuerelements. Dieses Thema bietet eine allgemeine Übersicht über tom. Es werden die folgenden Themen erläutert.
- TOM Version 2-Objekte
- TOM-Schnittstellenkonventionen
- TomBool-Typ
- Math BuildUp and Build Down
- 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 schnittstellen abgeleitet. Die aktualisierte TOM-API bietet 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 von der ITextDocument2-Schnittstelle definiert, die Über Methoden zum Erstellen und Abrufen von Objekten in der Objekthierarchie verfügt. Für die einfache Nur-Text-Verarbeitung können Sie ein ITextRange2-Objekt aus einem ITextDocument2-Objekt abrufen und damit die meisten Dinge erledigen. Wenn Sie Rich-Text-Formatierung hinzufügen müssen, können Sie ITextFont2- und ITextPara2-Objekte aus einem ITextRange2-Objekt abrufen. ITextFont2 stellt die Programmierentsprechung des Microsoft Word Dialogfelds format-font bereit, und ITextPara2 stellt die Entsprechung des Word-Dialogfelds format-paragraph 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 Auswahlhervorhebung und einigen ui-orientierten Methoden handelt.
Die Bereichs- und Auswahlobjekte enthalten bildschirmorientierte Methoden, mit denen Programme Text auf dem Bildschirm oder Text untersuchen können, der auf den Bildschirm gescrollt werden kann. Diese Funktionen helfen beispielsweise, Text für Personen mit sehbehinderten 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 Storys bezeichnet werden. Storys stellen verschiedene Teile eines Dokuments dar, z. B. den Haupttext des Dokuments, Kopf- und Fußzeilen, Fußnoten, Anmerkungen und Rich-Text-Scratchpads. Bei der Übersetzung zwischen linear formatierten mathematischen Ausdrücken und einer integrierten Form wird eine Geschichte mit einem Ablagepad verwendet. Beim Speichern des Inhalts eines Bereichs, bei dem es sich um die aktuelle Kopierquelle handelt, wenn der Inhalt geändert werden soll, wird auch ein Ablagepad verwendet.
Ein ITextRange2-Objekt wird durch seine Anfangs- und Endzeichenpositionsoffsets und ein Storyobjekt definiert. Sie ist nicht unabhängig vom übergeordneten Storyobjekt vorhanden, obwohl der Text in die Zwischenablage oder in 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 Weise ändern, ein Duplikat von sich selbst zurückgeben, und es kann dazu aufgefordert werden, seine Anfangs- und Endzeichenpositionen und seinen Storyzeiger auf die aktuelle Auswahl zu kopieren.
Ein explizites Storyobjekt ist nicht erforderlich, da immer ein ITextRange-Objekt erstellt werden kann, um eine bestimmte Story darzustellen. Insbesondere kann das ITextDocument-Objekt ein ITextStoryRanges-Objekt erstellen, um die Storys im Dokument in Form von Bereichen mit Start- und Endzeichenpositionswerten aufzuzählen, die vollständige Storys 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 Form von Bereichen mit Start- und Endzeichenpositionswerten aufzuzählen, die vollständige Storys beschreiben (z. B. 0 und tomForward).
Die ITextRow-Schnittstelle bietet zusammen mit den Methoden ITextRange::Move und ITextRange::Expand die Möglichkeit, Tabellen einzufügen, abzufragen und zu ändern.
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 _ VERÖFFENTLICHT
- 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 unbrauchbar, und alle seine Methoden geben CO _ E RELEASED _ zurück.
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 0 (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 den Präfixen Get und Set, 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.
TomBool-Typ
Viele TOM-Methoden verwenden einen speziellen Variablentyp 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 TomTrue- und tomFalse-Werte geben true und false an. Der tomToggle-Wert wird verwendet, um eine Eigenschaft umzuschalten. Der tomUndefined-Wert, der eher ninch genannt wird, ist ein spezieller Wert ohne Eingabe und ohne Änderung, der mit Longs, Gleitkommawerten und COLORREF-Werten funktioniert. Für Zeichenfolgen wird tomUndefined (oder NINCH) durch die NULL-Zeichenfolge dargestellt. Bei Eigenschaftseinstellungsvorgängen ändert die Verwendung von tomUndefined die Zieleigenschaft nicht. Für Vorgänge zum Abrufen von Eigenschaften bedeutet tomUndefined, dass die Zeichen im Bereich unterschiedliche Werte aufweisen (das graue Kontrollkästchen wird in Eigenschaftsdialogfeldern angezeigt).
Mathematisches Erstellen und Erstellen
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 umgekehrte Konvertierung aus, die als Linearisierung oder Build down bezeichnet wird, um integrierte Versionen von mathematischen Ausdrücken zurück in das lineare Format zu konvertieren. Die Mathematische Build down-Funktion 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) erfolgen. Dieser Abschnitt enthält Tabellen mit RTF-Steuerwörtern für Absatzeigenschaften und Zeicheneigenschaften.
TOM RTF Absatzsteuerungswörter
| Steuerwort | Bedeutung |
|---|---|
| \ fi n | Einzug der ersten Zeile (Der Standardwert ist 0(null). |
| \ Halten | Behalten Sie den Absatz intakt. |
| \ keepn | Behalten Sie den nächsten Absatz bei. |
| \ li n | Linker Einzug (Der Standardwert ist 0).) |
| \ noline | Keine Zeilennummerierung. |
| \ nowidctlpar | Deaktivieren Sie die steuerungs- bzw. verwaiste Steuerung. |
| \ pagebb | Seite "Umbruch" vor dem Absatz. |
| \ Par | Neuer Absatz. |
| \ pard | Setzt auf Standard absatzeigenschaften zurück. |
| \ Ql | Linksbündig ausgerichtet (Standard). |
| \ Qr | Rechtsbündig ausgerichtet. |
| \ Qj | Blocksatz. |
| \ Qc | Zentriert. |
| \ ri n | Rechter Einzug (Der Standardwert ist 0 (null). |
| \ s n | Format n. |
| \ sa n | Leerzeichen nach (der Standardwert ist 0 (null). |
| \ sb n | Leerzeichen vor (der Standardwert ist 0 (null). |
| \ sl n | Wenn der Zeilenabstand fehlt oder n=1000, wird der Zeilenabstand durch das höchste Zeichen in der Zeile bestimmt (einzeiler Abstand). Wenn n> null ist, wird mindestens diese Größe verwendet. Wenn n gleich < null ist, wird genau | n | verwendet. Der Zeilenabstand ist ein mehrzeiler Abstand, wenn \ slmult 1 folgt. |
| \ slmult m | Folgt \ sl. m = null: Mindestens oder exakter Zeilenabstand, wie von \ sl n beschrieben. m = 1: Zeilenabstand = n/240-mal einzeiler Abstand. |
| \ TB n | Position der Balkenregisterkarte in Twips vom linken Rand. |
| \ tldot | Registerkarten-Leaderpunkte. |
| \ tleq | Tabstopp-Leader: Gleichheitszeichen. |
| \ tlhyph | Bindestriche für Tabstopps. |
| \ tlth | Spitzenlinie der Tabulatoren. |
| \ tlul | Registerkartenleiter unterstrichen. |
| \ Tqc | Zentrierte Registerkarte. |
| \ tqdec | Registerkarte "Dezimal". |
| \ tqr | Registerkarte "Rechts leeren". |
| \ tx n | Tabstoppposition in Twips vom linken Rand. |
TOM RTF Character Format Control Words
| Steuerwort | Bedeutung |
|---|---|
| \ Animation n | Legt den Animationstyp auf n fest. |
| \ B | Fettdruck |
| \ Caps | Alle Groß- und Groß- |
| \ cf n | Vordergrundfarbe (der Standardwert ist tomAutocolor). |
| \ cs n | Zeichenformat n. |
| \ dn n | Unterskriptposition in Halbpunkten (Der Standardwert ist 6). |
| \ Embo | Geprägt. |
| \ f n | Schriftartnummer, n bezieht sich auf einen Eintrag in der Schriftarttabelle. |
| \ fs n | Schriftgrad in Halbpunkten (Der Standardwert ist 24). |
| \ Highlight n | Hintergrundfarbe (der Standardwert 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 durch \ \ deflang n in den Dokumenteigenschaften definiert wird. |
| \ nosupersub | Deaktiviert hoch- oder untergestellt. |
| \ outl | Umriss. |
| \ einfach | Setzt Zeichenformatierungseigenschaften auf einen standardwert zurück, der von der Anwendung definiert wird. Die zugeordneten Zeichenformatierungseigenschaften (beschrieben im Abschnitt Zugeordnete Zeicheneigenschaften in der RTF-Spezifikation) werden ebenfalls zurückgesetzt. |
| \ SCAPS | Kleine Groß- und Klein groß. |
| \ Shad | Schatten. |
| \ Schlag | Durchgestrichen. |
| \ Sub | Wendet einen Inskript auf Text an und reduziert den Punktgröße entsprechend den Schriftartinformationen. |
| \ Super | Wendet hochgestellt auf Text an und reduziert den Punktgröße entsprechend den Schriftartinformationen. |
| \ Ul | Kontinuierliche Unterstreichung. \ ul0 deaktiviert alle Unterstreichungen. |
| \ Uld | Gepunktete Unterstreichung. |
| \ uldb | Doppelte Unterstreichung. |
| \ ulnone | Beendet alle Unterlinings. |
| \ ulw | Wort unterstrichen. |
| \ bis n | Superscriptposition in Halbpunkten (Der Standardwert ist 6). |
| \ V | Ausgeblendeter Text. |
Suchen nach Rich Text
Sie können TOM-Methoden verwenden, um Rich-Text zu finden, wie durch einen Textbereich definiert. Solche Umfangreichen Text zu finden, ist häufig bei der Textverarbeitung erforderlich, obwohl sie noch nie in einem "Was Sie sehen, was Sie erhalten" (WYSIWYG)-Textverarbeitung erfüllt wurde. Es gibt eindeutig einen größeren Bereich des Rich-Text-Abgleichs, der es ermöglicht, einige Zeichenformatierungseigenschaften zu ignorieren (oder Absatzformatierung und/oder Objektinhalt einzubezieht), aber solche Verallgemeinerungen gehen über den Rahmen dieses Abschnitts hinaus.
Ein Zweck dieser Funktionalität ist die Verwendung eines Rich-Text-Suchdialogfelds, 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 werden verwendet, um die Suche im 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 Tom-Methoden verwendet werden, um Text zu suchen, der Kombinationen der genauen Zeichenformatierung enthält. Der Algorithmus sucht nach dem Nur-Text im Übereinstimmungsbereich mit dem Namen pr1 . Wenn der Nur-Text gefunden wird, wird auf ihn durch einen Testbereich mit dem Namen pr2 verwiesen. Anschließend werden zwei Einfügemarkebereiche ( prip1 und prip2 ) verwendet, um den Testbereich zu durchlaufen und dessen Zeichenformatierung mit der von zu pr1 vergleichen. Wenn sie genau übereinstimmen, wird der Eingabebereich (angegeben von ppr ) aktualisiert, um auf den Text des Testbereichs zu verweisen, und die Funktion gibt die Anzahl der Zeichen im übereinstimmende Bereich zurück. Zwei ITextFont-Objekte, pf1 und , werden im pf2 Zeichenformatierungsvergleich verwendet. Sie werden an die Einfügemarkebereiche 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 Barrierefreiheitsunterstützung ü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 funktionieren, 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 Bestimmen der richtigen Schnittstelle beschrieben:
- Durch 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 (es ist kein Marshalling erforderlich).
Weitere Informationen finden Sie in der Microsoft Active Accessibility-Spezifikation. Nachdem Sie ein Objekt von einer Bildschirmposition erhalten 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 aus ausgeführter Objekttabelle
Eine ausgeführte Objekttabelle (ROT) gibt an, welche Objektinstanzen aktiv sind. Durch Abfragen dieser Tabelle können Sie den Vorgang zum Verbinden 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 sich eine TOM-Instanz mit einem Fenster mithilfe eines Monikers im ROT registrieren. Sie erstellen den Moniker aus einer Zeichenfolge, die den Hexadezimalwert des HWNDenthält. Im folgenden Codebeispiel wird dies veranschaulicht.
// 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 unter Schnittstelle aus ausgeführter Objekttabellebeschrieben, erhalten Sie einen HWND für die Bildschirmposition und senden diese Nachricht dann an das 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 (achten Sie darauf, das Objekt festzulegen, 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 die Möglichkeiten verbessern, wenn Sie an interessanten Orten eintreffen. In der folgenden Tabelle werden die nützlichsten Methoden beschrieben.
| Methode | Fördern der Barrierefreiheit |
|---|---|
| GetSelection | Diese Methode ruft die aktive Auswahl ab, die für eine Vielzahl von ansichtsorientierten Zwecken verwendet werden kann, z. B. hervorheben von Text 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 enthaltenen Teileinheiten vollständig enthalten sind. Expand(tomWindow)Beispielsweise erweitert den Bereich um den sichtbaren Teil der Geschichte des Bereichs. |
| 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 Anfangs- oder Endzeichenposition im Textbereich ab. |
| ScrollIntoView | Führt einen Bildlauf für einen Textbereich in die Ansicht durch. |
| Sollwert | Wählt Text an oder nach oben bis zu einem angegebenen Punkt aus. |
Zeichen übereinstimmungssätze
Der Variant-Parameter der verschiedenen * Move-Methoden in ITextRange,z. B. MoveWhile und MoveUntil,kann eine explizite Zeichenfolge oder einen 32-Bit-Zeichensatz-Satz 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. Einfache griechisch-Buchstaben werden z. B. durch CR Griechisch = 0x805f0370 definiert, _ und druckbare ASCII-Zeichen werden durch CR _ ASCIIPrint = 0x805e0020 definiert. Darüber hinaus können Sie mit den Methoden MoveWhile und MoveUntil schnell eine Zeichenspanne in einem beliebigen GetStringTypeEx-Zeichensatz oder in einer Zeichenspanne umgehen, die sich nicht in einem dieser Zeichensätze befindet.
Die GetStringTypeEx-Mengen 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 | 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 | Hexadezimale Ziffern. |
| C1 _ ALPHA | 0x0100 | Alle linguistischen Zeichen (alphabetisch, silbenhaft oder ideografische Zeichen). |
| 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 durch Unicode standardisierte bidirektionale Layoutalgorithmus genaue Ergebnisse liefert. Diese Typen schließen sich gegenseitig aus. Weitere Informationen zur Verwendung dieser Attribute finden Sie unter The 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 _ RIGHTTOLEFT | 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äisches numerisches Abschlusszeichen. |
| C2 _ ARABICNUMBER | 0x6 | Arabische Zahl. |
| C2 _ COMMONSEPARATOR | 0x7 | Allgemeines numerisches Trennzeichen. |
| Neutral: | ||
| C2 _ BLOCKSEPARATOR | 0x8 | Blocktrennzeichen. |
| C2 _ SEGMENTSEPARATOR | 0x9 | Segmenttrennzeichen. |
| _C2-LEERRAUM | 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 gedacht, die für die allgemeine Textverarbeitung oder für die C-Standardbibliotheksfunktionen erforderlich sind.
| CType3-Name | Wert | Bedeutung |
|---|---|---|
| C3 _ NONSPACING | 0x1 | Nonspacing-Markierung. |
| C3 _ DIACRITIC | 0x2 | Diakritische Nicht-Pac-Markierung. |
| C3 _ VOWELMARK | 0x4 | Vokalzeichen ohnePac.) |
| _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 _ IDEOGRAMM | 0x100 | Ideografisches Zeichen. |
| C3 _ KASHIDA | 0x200 | Arabisches Kashida-Zeichen. |
| C3 _ ALPHA | 0x8000 | Alle linguistischen Zeichen (alphabetisch, silbenhaft und ideografische Zeichen). |
| 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 | Latin1 | 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 |
| GriechischSymbole | 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 | ArabischX | 0x653 – 0x6ff |
| Devangari | 0x900 – 0x97f | Pausieren (vormals :) | 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 | AtlantanX | 0x10a0 – 0xa0cf |
| BascGeorakun | 0x10d0 – 0x10ff | Jamo | 0x1100 – 0x11ff |
| LatinXAdd | 0x1e00 – 0x1eff | GriechischX | 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 |
| ArabischPresA | 0xfb50 – 0xfdff | CombHalfMark | 0xfe20 – 0xfe2f |
| CJKCompForm | 0xfe30 – 0xfe4f | SmallFormVar | 0xfe50 – 0xfe6f |
| ArabischPresB | 0xfe70 – 0xfefe | HalfFullForm | 0xff00 – 0xffef |
| Specials | 0xfff0 – 0xfffd |