IMAPITable::QueryPosition
適用対象: Outlook 2013 | Outlook 2016
小数部の値に基づいて、カーソルの現在のテーブル行位置を取得します。
HRESULT QueryPosition(
ULONG FAR * lpulRow,
ULONG FAR * lpulNumerator,
ULONG FAR * lpulDenominator
);
パラメーター
lpulRow
[out]現在の行の番号へのポインター。 行番号は 0 から始まります。テーブルの最初の行は 0 です。
lpulNumerator
[out]テーブル位置を識別する分数の分子へのポインター。
lpulDenominator
[out]テーブルの位置を識別する分母へのポインター。 lpulDenominator パラメーターを 0 にすることはできません。
戻り値
S_OK
メソッドは、 lpulRow、 lpulNumerator、 lpulDenominator で有効な値を返しました。
注釈
IMAPITable::QueryPosition メソッドは、現在の行の位置を決定し、現在の行の数と、テーブルの末尾に対する相対位置を示す小数部の値の両方を返します。 MAPI は、現在の行を読み取る次の行として定義します。
実装に関するメモ
lpulDenominator パラメーターのテーブル内の行の正確な数を返す必要はありません。近似値を指定できます。
現在の行を特定できない場合は、 lpulRow で 0xFFFFFFFF の値を返します。
呼び出し側への注意
QueryPosition を使用すると、スクロール バーにスクロール ボックスを配置できます。 たとえば、100 行を含むテーブルで、 QueryPosition が lpulNumerator パラメーターで 75、 lpulDenominator パラメーターに 100、 lpulRow パラメーターに 75 の値を返す場合は、スクロール バーを横切る方向のスクロール ボックス 3/4 を配置できます。
lpulDenominator の値がテーブル内の行数であることに依存しないでください。 QueryPosition は、カーソルが配置されている正確な行を常に識別できるわけではありません。
QueryPosition の呼び出しには、特に大規模な分類テーブルの場合、大量のメモリが必要になる場合があります。 lpulRow パラメーターが 0xFFFFFFFF に設定されている場合、QueryPosition が現在の行を決定するために必要なメモリが多すぎます。 IMAPITable::SeekRowApprox メソッドを呼び出して、lpulNumerator パラメーターと lpulDenominator パラメーターによって識別される行にテーブルを配置します。 ただし、メモリが要因でなかった場合、 SeekRowApprox が現在の位置と同じ行 QueryPosition に設定されるとは限りません。