Поделиться через


Функция обратного вызова EDITSTREAMCALLBACK (richedit.h)

Функция EditStreamCallback — это определяемая приложением функция обратного вызова, используемая с EM_STREAMIN и EM_STREAMOUT сообщениями. Он используется для передачи потока данных в элемент управления расширенными изменениями или из него. Тип EDITSTREAMCALLBACK определяет указатель на эту функцию обратного вызова. EditStreamCallback является заполнителем для имени определяемой приложением функции.

Синтаксис

EDITSTREAMCALLBACK Editstreamcallback;

DWORD Editstreamcallback(
  [in] DWORD_PTR dwCookie,
  [in] LPBYTE pbBuff,
  [in] LONG cb,
  [in] LONG *pcb
)
{...}

Параметры

[in] dwCookie

Тип: DWORD_PTR

Значение dwCookie члена структуры EDITSTREAM. Приложение указывает это значение при отправке сообщения EM_STREAMIN или EM_STREAMOUT.

[in] pbBuff

Тип: LPBYTE

Указатель на буфер для чтения или записи. Для операции потоковой передачи (чтения) функция обратного вызова заполняет этот буфер данными для передачи в элемент управления расширенными изменениями. Для операции потоковой передачи (записи) буфер содержит данные из элемента управления, который функция обратного вызова записывает в некоторое хранилище.

[in] cb

Тип: LONG

Число байтов для чтения или записи.

[in] pcb

Тип: LONG*

Указатель на переменную, которую функция обратного вызова задает количеству байтов, фактически считываемых или записанных.

Возвращаемое значение

Тип: DWORD

Функция обратного вызова возвращает ноль, чтобы указать успешность.

Функция обратного вызова возвращает ненулевое значение, указывающее ошибку. Если возникает ошибка, операция чтения или записи завершается, а элемент управления расширенными изменениями удаляет все данные в буфере pbBuff. Если функция обратного вызова возвращает ненулевое значение, элемент управления расширенными изменениями использует элемент dwError член структуры EDITSTREAM, чтобы передать значение обратно приложению.

Замечания

При отправке сообщения EM_STREAMIN или EM_STREAMOUT в элемент управления расширенными изменениями элемент pfnCallback структуры EDITSTREAM указывает указатель на функцию EditStreamCallback. Элемент управления расширенными изменениями неоднократно вызывает функцию для передачи потока данных в элемент управления или из него.

При отправке сообщения EM_STREAMIN или EM_STREAMOUT необходимо указать значение для члена dwCookie структуры EDIT STREAM. Элемент управления расширенными изменениями использует параметр dwCookie для передачи этого значения в функцию EditStreamCallback. Например, можно использовать dwCookie для передачи дескриптора в открытый файл. Затем функция обратного вызова может использовать dwCookie дескриптор для чтения из файла или записи в нее.

Элемент управления многократно вызывает функцию обратного вызова, передав часть данных с каждым вызовом. Элемент управления продолжает вызывать функцию обратного вызова до тех пор, пока не возникнет одно из следующих условий:

  • Функция обратного вызова возвращает ненулевое значение.
  • Функция обратного вызова возвращает ноль в параметре pcb * .
  • Ошибка, которая предотвращает передачу данных в сам элемент управления расширенными возможностями редактирования. Примерами являются ситуации вне памяти, сбой системной функции или недопустимый символ в буфере чтения.
  • Для операции потоковой передачи код RTF содержит данные, указывающие конец блока RTF.
  • Для операции потоковой передачи в однострочный элемент управления редактирования обратный вызов считывается в символе конца абзаца (CR, LF, VT, LS или PS).

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows Vista [только классические приложения]
минимальный поддерживаемый сервер Windows Server 2003 [только классические приложения]
целевая платформа Виндоус
заголовка richedit.h

См. также

EDITSTREAM

EM_STREAMIN

EM_STREAMOUT

Справочник