Les accesseurs sont normalement créés en utilisant les macros BEGIN_COLUMN_MAP et END_COLUMN_MAP . Cela garantit que MoveNext récupérera automatiquement les données pour toutes les colonnes spécifiées. Dans certains cas, vous ne pouvez pas récupérer toutes les colonnes sur chaque geste (par exemple, si une des colonnes contient un élément graphique important). Dans ce cas, vous pouvez placer une colonne particulière dans un accesseur séparé et qui font un accesseur non automatique, comme indiqué ci-dessous. Lorsque vous appelez MoveNext, ce code récupère automatiquement uniquement l'ID de produit. Si vous avez besoin du nom de long, vous devez appeler GetData explicitement, passant le numéro de l'accesseur (1, dans ce cas) pour récupérer les données.
classe CProduct
{
public :
long nProductID ;
char szVeryLong&Name [2048] ;
BEGIN_ACCESSOR_MAP (CProduct, 2) / / passer un nombre d'accesseurs
BEGIN_ACCESSOR (0, true) / / true = un accesseur automatique
COLUMN_ENTRY (1, nProductID)
END_ACCESSOR()
BEGIN_ACCESSOR (1, false) nbsp ; / / false ne = pas un auto-accesseur
COLUMN_ENTRY (2, szVeryLongName)
END_ACCESSOR()
END_ACCESSOR_MAP()
};