Поделиться через


IMAPITable::SeekRow

Область применения: Outlook 2013 | Outlook 2016

Перемещает курсор в определенную позицию в таблице.

HRESULT SeekRow(
BOOKMARK bkOrigin,
LONG lRowCount,
LONG FAR * lplRowsSought
);

Параметры

bkOrigin

[в] Закладка, определяющая начальную позицию для операции поиска. Закладку можно создать с помощью метода IMAPITable::CreateBookmark или передать одно из следующих предопределенных значений.

BOOKMARK_BEGINNING

Запускает операцию поиска с начала таблицы.

BOOKMARK_CURRENT

Запускает операцию поиска из строки таблицы, в которой находится курсор.

BOOKMARK_END

Запускает операцию поиска с конца таблицы.

lRowCount

[в] Число строк для перемещения со знаком, начиная с закладки, определяемой параметром bkOrigin .

lplRowsSought

[out] Если lRowCount является допустимым указателем на входные данные, lplRowsSought указывает на количество строк, обработанных в операции поиска, знак которого указывает направление поиска вперед или назад. Если значение lRowCount является отрицательным, то значение lplRowsSought — отрицательное.

Возвращаемое значение

S_OK

Операция поиска прошла успешно.

MAPI_E_BUSY

Выполняется другая операция, которая предотвращает запуск операции поиска строк. Либо выполняющиеся операции должны быть разрешены к завершению, либо она должна быть остановлена.

MAPI_E_INVALID_BOOKMARK

Закладка, указанная в параметре bkOrigin , недопустима, так как она была удалена или находится за пределами последней запрошенной строки.

MAPI_W_POSITION_CHANGED

Вызов выполнен успешно, но закладка, указанная в параметре bkOrigin , больше не задается в той же строке, что и при последнем использовании. Если закладка не использовалась, она больше не находится в том же положении, что и при ее создании. При возврате этого предупреждения вызов должен быть обработан как успешный. Чтобы проверить наличие этого предупреждения, используйте макрос HR_FAILED . Дополнительные сведения см. в разделе Использование макросов для обработки ошибок.

Замечания

Метод IMAPITable::SeekRow устанавливает новую позицию BOOKMARK_CURRENT для курсора. Параметр lRowCount указывает количество строк, перемещаемых курсором, и направление перемещения.

Если итоговая позиция находится за последней строкой таблицы, курсор размещается после последней строки. Если результирующая позиция находится перед первой строкой таблицы, курсор размещается в начале первой строки.

Примечания для исполнителей

Если строка, на которую указывает bkOrigin , больше не существует в таблице и вы не можете установить новую позицию для закладки, верните MAPI_E_INVALID_BOOKMARK. Если строка, указываемая на by_bkOrigin_no больше, существует и вы можете установить новую позицию для закладки, верните MAPI_W_POSITION_CHANGED.

Закладка, указывающая на строку, свернутую из табличного представления, по-прежнему можно использовать. Если вызывающий объект пытается переместить курсор в такую закладку, переместите курсор в следующую видимую строку и верните MAPI_W_POSITION_CHANGED.

Вы можете перемещать закладки для позиций, свернутых из представления, либо во время использования, либо во время сворачивания строки. Если закладка перемещается во время сворачивания строки, оставьте в закладке немного, который указывает, была ли закладка перемещена с момента последнего использования или, если она никогда не использовалась, с момента ее создания.

Примечания для вызывающих методов

Чтобы указать движение назад для SeekRow, передайте отрицательное значение в lRowCount. Чтобы выполнить поиск в начале таблицы, передайте ноль в lRowCount , а значение BOOKMARK_BEGINNING в bkOrigin.

Если в таблице много строк, операция SeekRow может выполняться медленно. Производительность также может быть затронута, если требуется возвращать количество строк в содержимом параметра lplRowsSought .

SeekRow возвращает количество фактических строк, по которым выполнен поиск(положительных или отрицательных) в переменной, на которую указывает lRowCount. В обычной операции он должен возвращать то же значение для lplRowsSought , что и для lRowCount, если поиск не достиг начала или конца таблицы.

Не устанавливайте для параметра lRowCount число больше 50. Для поиска большего количества строк используйте метод IMAPITable::SeekRowApprox .

Справочные материалы по MFCMAPI

Пример кода MFCMAPI указан в приведенной ниже таблице.

Файл Функция Comment
MAPIProcessor.cpp
CMAPIProcessor::P rocessMailboxTable
MFCMAPI использует метод IMAPITable::SeekRow для поиска начала таблицы перед обработкой.

См. также

IMAPITable::CreateBookmark

IMAPITable::FindRow

IMAPITable::QueryRows

IMAPITable::SeekRowApprox

IMAPITable : IUnknown

Mfcmapi (en) � �������� ������� ����