IMAPITable::SeekRow
S’applique à : Outlook 2013 | Outlook 2016
Déplace le curseur vers une position spécifique dans le tableau.
HRESULT SeekRow(
BOOKMARK bkOrigin,
LONG lRowCount,
LONG FAR * lplRowsSought
);
Paramètres
bkOrigin
[in] Signet identifiant la position de départ de l’opération de recherche. Un signet peut être créé à l’aide de la méthode IMAPITable ::CreateBookmark , ou l’une des valeurs prédéfinies suivantes peut être passée.
BOOKMARK_BEGINNING
Démarre l’opération de recherche à partir du début de la table.
BOOKMARK_CURRENT
Démarre l’opération de recherche à partir de la ligne de la table où se trouve le curseur.
BOOKMARK_END
Démarre l’opération de recherche à partir de la fin de la table.
lRowCount
[in] Nombre signé du nombre de lignes à déplacer, à partir du signet identifié par le paramètre bkOrigin .
lplRowsSought
[out] Si lRowCount est un pointeur valide en entrée, lplRowsSought pointe vers le nombre de lignes traitées dans l’opération de recherche, dont le signe indique le sens de la recherche, vers l’avant ou vers l’arrière. Si lRowCount est négatif, lplRowsSought est négatif.
Valeur renvoyée
S_OK
L’opération de recherche a réussi.
MAPI_E_BUSY
Une autre opération est en cours qui empêche l’opération de recherche de lignes de démarrer. Soit l’opération en cours doit être autorisée à se terminer, soit elle doit être arrêtée.
MAPI_E_INVALID_BOOKMARK
Le signet spécifié dans le paramètre bkOrigin n’est pas valide, car il a été supprimé ou parce qu’il est au-delà de la dernière ligne demandée.
MAPI_W_POSITION_CHANGED
L’appel a réussi, mais le signet spécifié dans le paramètre bkOrigin n’est plus défini sur la même ligne que lors de sa dernière utilisation. Si le signet n’a pas été utilisé, il n’est plus dans la même position qu’au moment de sa création. Lorsque cet avertissement est retourné, l’appel doit être géré comme ayant réussi. Pour tester cet avertissement, utilisez la macro HR_FAILED . Pour plus d’informations, consultez Utilisation de macros pour la gestion des erreurs.
Remarques
La méthode IMAPITable ::SeekRow établit une nouvelle position BOOKMARK_CURRENT pour le curseur. Le paramètre lRowCount indique le nombre de lignes que le curseur déplace et la direction du mouvement.
Si la position résultante est au-delà de la dernière ligne du tableau, le curseur est positionné après la dernière ligne. Si la position résultante est avant la première ligne du tableau, le curseur est positionné au début de la première ligne.
Remarques pour les responsables de l’implémentation
Si la ligne pointée par bkOrigin n’existe plus dans la table et que vous ne pouvez pas établir une nouvelle position pour le signet, retournez MAPI_E_INVALID_BOOKMARK. Si la ligne pointée vers by_bkOrigin_no existe plus longtemps et que vous pouvez établir une nouvelle position pour le signet, retournez MAPI_W_POSITION_CHANGED.
Un signet pointant vers une ligne réduite en dehors de la vue de table peut toujours être utilisé. Si l’appelant tente de déplacer le curseur vers un tel signet, déplacez le curseur vers la ligne visible suivante et retournez MAPI_W_POSITION_CHANGED.
Vous pouvez déplacer les signets des positions réduites hors de la vue, soit au moment de l’utilisation, soit au moment où la ligne est réduite. Si un signet est déplacé au moment où la ligne est réduite, conservez un peu dans le signet qui indique si le signet a été déplacé depuis sa dernière utilisation ou, s’il n’a jamais été utilisé, depuis sa création.
Remarques pour les appelants
Pour indiquer un déplacement vers l’arrière pour SeekRow, transmettez une valeur négative dans lRowCount. Pour effectuer une recherche au début de la table, passez zéro dans lRowCount et la valeur BOOKMARK_BEGINNING dans bkOrigin.
Si la table contient un grand nombre de lignes, l’opération SeekRow peut être lente. Les performances peuvent également être affectées si vous avez besoin qu’un nombre de lignes soit retourné dans le contenu du paramètre lplRowsSought .
SeekRow retourne le nombre de lignes réellement recherchées, positives ou négatives, dans la variable pointée par lRowCount. Dans l’opération ordinaire, elle doit retourner la même valeur pour lplRowsSought que celle transmise pour lRowCount, sauf si la recherche a atteint le début ou la fin de la table.
Ne définissez pas lRowCount sur un nombre supérieur à 50. Pour rechercher un plus grand nombre de lignes, utilisez la méthode IMAPITable ::SeekRowApprox .
Référence MFCMAPI
Pour voir un exemple de code MFCMAPI, consultez le tableau suivant.
Fichier | Fonction | Commentaire |
---|---|---|
MAPIProcessor.cpp |
CMAPIProcessor ::P rocessMailboxTable |
MFCMAPI utilise la méthode IMAPITable ::SeekRow pour localiser le début de la table avant le traitement. |