Чтобы использовать статический метод доступа, Ваш потребитель должен иметь запись пользователя. Запись пользователя — это класс C++, который содержит элементы данных для обработки ввода или вывода. Мастер объектов ATL создает запись пользователя для вашего потребителя. Можно добавить к записи пользователя для решения второстепенных задач, например, обработки команд методы.
В следующем коде показан образец записи, которая обрабатывает команды. В пользовательской записи BEGIN_OLUMN_MAP представляет собой набор строк данных, передаваемых потребителю от поставщика. BEGIN_PARAM_MAP представляет собой набор параметров команды. В этом примере используется класс CCommand для обработки параметров команды. Члены данных в записи сопоставления представляют собой смещения в один непрерывный блок памяти для каждого экземпляра класса. Выполнение макроса COLUMN_ENTRY соответствуют макроса PROVIDER_COLUMN_ENTRY на стороне провайдера.
Более подробную информацию о COLUMN_MAP и PARAM_MAP макросы содержатся в разделе макросы для шаблонов потребителей OLE DB.
класс CArtists
{
общественности:
/ / Элементы данных
Чар m_szFirstName [20];
Чар m_szLastName [30];
короткие m_nAge;
/ / вывод привязки карты
BEGIN_COLUMN_MAP(CArtists)
COLUMN_ENTRY (1, m_szFirstName)
COLUMN_ENTRY (2, m_szLastName)
COLUMN_ENTRY (3, m_nAge)
END_COLUMN_MAP()
/ / параметр Привязка карты
BEGIN_PARAM_MAP(CArtists)
COLUMN_ENTRY (1, m_nAge)
END_PARAM_MAP
}
В следующем примере показано запись пользователя, изменены для поддержки нескольких методов доступа в наборе строк. Вместо BEGIN_COLUMN_MAP и END_COLUMN_MAP, он использует BEGIN_ACCESSOR_MAP и BEGIN_ACCESSOR для каждого метода доступа. Макрос BEGIN_ACCESSOR указывает номер доступа (смещение от нуля) и является ли метод доступа autoaccessor. Autoaccessors вызов метода GetData для извлечения данных автоматически при вызове метода MoveNext. Неавтоматическое доступа требуют явного извлечения данных. Использовать-автоматический метод доступа при привязке к полю данных большого размера (как растровое изображение), вы не можете получить для каждой записи.
класс CMultiArtists
{
общественности:
/ / Элементы данных
Чар m_szFirstName [20];
Чар m_szLastName [30];
короткие m_nAge;
/ / вывод привязки карты
BEGIN_ACCESSOR_MAP (CMultiArtists, 2)
BEGIN_ACCESSOR (0, правда)
COLUMN_ENTRY (1, m_szFirstName)
COLUMN_ENTRY (2, m_szLastName)
END_ACCESSOR()
BEGIN_ACCESSOR (1, false) / / не автоматический метод доступа
COLUMN_ENTRY (3, m_nAge)
END_ACCESSOR()
END_ACCESSOR_MAP()
}