次の方法で共有


IMAPITable::SeekRow

適用対象: Outlook 2013 | Outlook 2016

テーブル内の特定の位置にカーソルを移動します。

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

パラメーター

bkOrigin

[in]シーク操作の開始位置を示すブックマーク。 ブックマークは、IMAPITable::CreateBookmark メソッドを使用して作成することも、次の定義済みの値のいずれかを渡すことができます。

BOOKMARK_BEGINNING

テーブルの先頭からシーク操作を開始します。

BOOKMARK_CURRENT

カーソルがあるテーブル内の行からシーク操作を開始します。

BOOKMARK_END

テーブルの末尾からシーク操作を開始します。

lRowCount

[in] 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 に 0 を渡し、 bkOrigin でBOOKMARK_BEGINNING値を渡します。

テーブルに多数の行がある場合、 SeekRow 操作が遅くなる可能性があります。 lplRowsSought パラメーターの内容で行数を返す必要がある場合も、パフォーマンスが影響を受ける可能性があります。

SeekRow は、 lRowCount が指す変数で、実際に検索された正または負の行数を返します。 通常の操作では、検索がテーブルの先頭または末尾に達しない限り、lRowCount に渡される lplRowsSought の値と同じ値を返す必要があります。

lRowCount を 50 より大きい数値に設定しないでください。 より多くの行をシークするには、 IMAPITable::SeekRowApprox メソッドを 使用します。

MFCMAPI リファレンス

MFCMAPI のサンプル コードについては、次の表を参照してください。

ファイル 関数 コメント
MAPIProcessor.cpp
CMAPIProcessor::P rocessMailboxTable
MFCMAPI では、 IMAPITable::SeekRow メソッドを使用して、処理前にテーブルの先頭を見つけます。

関連項目

IMAPITable::CreateBookmark

IMAPITable::FindRow

IMAPITable::QueryRows

IMAPITable::SeekRowApprox

IMAPITable : IUnknown

[�R��h �T���v���Ƃ��� MFCMAPI