IMAPITable::SeekRow
Gilt für: Outlook 2013 | Outlook 2016
Verschiebt den Cursor an eine bestimmte Position in der Tabelle.
HRESULT SeekRow(
BOOKMARK bkOrigin,
LONG lRowCount,
LONG FAR * lplRowsSought
);
Parameter
bkOrigin
[in] Das Lesezeichen, das die Startposition für den Suchvorgang angibt. Ein Lesezeichen kann mithilfe der IMAPITable::CreateBookmark-Methode erstellt werden, oder einer der folgenden vordefinierten Werte kann übergeben werden.
BOOKMARK_BEGINNING
Startet den Suchvorgang am Anfang der Tabelle.
BOOKMARK_CURRENT
Startet den Suchvorgang aus der Zeile in der Tabelle, in der sich der Cursor befindet.
BOOKMARK_END
Startet den Suchvorgang am Ende der Tabelle.
lRowCount
[in] Die Anzahl der zu verschiebenden Zeilen mit Vorzeichen, beginnend mit dem Lesezeichen, das durch den bkOrigin-Parameter identifiziert wird.
lplRowsSought
[out] Wenn lRowCount ein gültiger Zeiger bei der Eingabe ist, zeigt lplRowsSought auf die Anzahl der Zeilen, die im Suchvorgang verarbeitet wurden, wobei das Vorzeichen die Richtung der Suche vor oder zurück angibt. Wenn lRowCount negativ ist, ist lplRowsSought negativ.
Rückgabewert
S_OK
Der Suchvorgang war erfolgreich.
MAPI_E_BUSY
Ein weiterer Vorgang wird ausgeführt, der verhindert, dass der Zeilensuchevorgang gestartet wird. Entweder sollte der laufende Vorgang abgeschlossen oder beendet werden.
MAPI_E_INVALID_BOOKMARK
Das im bkOrigin-Parameter angegebene Lesezeichen ist ungültig, weil es entfernt wurde oder die letzte angeforderte Zeile überschreitet.
MAPI_W_POSITION_CHANGED
Der Aufruf war erfolgreich, aber das im bkOrigin-Parameter angegebene Lesezeichen wird nicht mehr in derselben Zeile wie bei der letzten Verwendung festgelegt. Wenn das Lesezeichen nicht verwendet wurde, befindet es sich nicht mehr an der gleichen Position wie beim Erstellen. Wenn diese Warnung zurückgegeben wird, sollte der Aufruf als erfolgreich behandelt werden. Verwenden Sie zum Testen auf diese Warnung das Makro HR_FAILED . Weitere Informationen finden Sie unter Verwenden von Makros für die Fehlerbehandlung.
Hinweise
Die IMAPITable::SeekRow-Methode richtet eine neue BOOKMARK_CURRENT Position für den Cursor ein. Der lRowCount-Parameter gibt die Anzahl der Zeilen an, die der Cursor bewegt, und die Bewegungsrichtung.
Wenn die resultierende Position hinter der letzten Zeile der Tabelle liegt, wird der Cursor nach der letzten Zeile positioniert. Wenn sich die resultierende Position vor der ersten Zeile der Tabelle befindet, wird der Cursor am Anfang der ersten Zeile positioniert.
Hinweise für Implementierer
Wenn die Zeile, auf die bkOrigin verweist, nicht mehr in der Tabelle vorhanden ist und Sie keine neue Position für das Lesezeichen festlegen können, geben Sie MAPI_E_INVALID_BOOKMARK zurück. Wenn die Zeile auf by_bkOrigin_no länger vorhanden ist und Sie eine neue Position für das Lesezeichen festlegen können, geben Sie MAPI_W_POSITION_CHANGED zurück.
Ein Lesezeichen, das auf eine Zeile zeigt, die aus der Tabellenansicht reduziert ist, kann weiterhin verwendet werden. Wenn der Aufrufer versucht, den Cursor auf ein solches Lesezeichen zu verschieben, verschieben Sie den Cursor in die nächste sichtbare Zeile und geben MAPI_W_POSITION_CHANGED zurück.
Sie können Lesezeichen für Positionen verschieben, die aus der Ansicht reduziert wurden, entweder zum Zeitpunkt der Verwendung oder zu dem Zeitpunkt, zu dem die Zeile reduziert wird. Wenn ein Lesezeichen zu dem Zeitpunkt verschoben wird, zu dem die Zeile reduziert wird, behalten Sie ein Bit im Lesezeichen bei, das angibt, ob das Lesezeichen seit seiner letzten Verwendung verschoben wurde oder, wenn es nie verwendet wurde, seit seiner Erstellung.
Hinweise für Aufrufer
Um eine Rückwärtsbewegung für SeekRow anzugeben, übergeben Sie einen negativen Wert in lRowCount. Um bis zum Anfang der Tabelle zu suchen, übergeben Sie null in lRowCount und den Wert BOOKMARK_BEGINNING in bkOrigin.
Wenn die Tabelle viele Zeilen enthält, kann der SeekRow-Vorgang langsam sein. Die Leistung kann auch beeinträchtigt werden, wenn eine Zeilenanzahl im Inhalt des lplRowsSought-Parameters zurückgegeben werden muss.
SeekRow gibt die Anzahl der Tatsächlich durchsuchten Zeilen (positiv oder negativ) in der Variablen zurück, auf die von lRowCount verwiesen wird. Im normalen Betrieb sollte derselbe Wert für lplRowsSought zurückgegeben werden, der für lRowCount übergeben wurde, es sei denn, die Suche hat den Anfang oder das Ende der Tabelle erreicht.
Legen Sie lRowCount nicht auf eine Zahl größer als 50 fest. Verwenden Sie die IMAPITable::SeekRowApprox-Methode , um eine größere Anzahl von Zeilen zu durchsuchen.
MFCMAPI-Referenz
Einen MFCMAP-Beispielcode finden Sie in der folgenden Tabelle.
Datei | Funktion | Kommentar |
---|---|---|
MAPIProcessor.cpp |
CMAPIProcessor::P rocessMailboxTable |
MFCMAPI verwendet die IMAPITable::SeekRow-Methode , um den Anfang der Tabelle vor der Verarbeitung zu suchen. |