afx_msg BOOL OnDSCNotify( DSCSTATE nState, DSCREASON nReason, BOOL pBool );
Возвращаемое значение
Возвращает TRUE если операция представляемая nReason и nState была обработана. Иначе FALSE.
Параметры
nState
Одна из именованных констант, найденных в DSCSTATE перечислении.
nReason
Одна из именованных констант, найденных в DSCREASON перечислении
pBool
Булев ответ, указывающий, должна ли операция, представляемая nState и nReason продолжиться.
Замечания
Это извещение вызывается в ответ на событие связанного элемента управления источник данных который изменяет или пытается изменять основной курсор. Используйте это, чтобы захватывать причины (nReason) и состояние (nState) сгенерированные элементом управления источника данных. Все комбинации состояния и причин позволяются по умолчанию. Запишите ваш код, чтобы проверить состояние и причины в Вашей прикладной программе и возвратите TRUE или FALSE соответственно.
Чтобы использовать OnDSCNotify, объявите карту и извещений в верхнем колонтитуле класса, который хочет получать сообщение следующим образом:
class CMyDlg : public CDialog { ...... DECLARE_EVENTSINK_MAP() BOOL OnDSCNotify(DSCSTATE nState,DSCREASON nReason, BOOL* pBool); ...... };
Затем, в реализации вашего класса, определите карту извещений и функцию, чтобы получить события следующим образом:
BEGIN_EVENTSINK_MAP(CMyDlg, CDialog) ON_DSCNOTIFY(CMyDlg, IDC_RDCCTRL1, OnDSCNotify) END_EVENTSINK_MAP()
Функция повторного вызова извещения, Ваша реализация OnDSCNotify, будет вызвана, когда следующие события происходят внутри элемента управления источника данных:
enum DSCREASON { dscNoReason = 0, dscClose, dscCommit, dscDelete, dscEdit, dscInsert, dscModify, dscMove };
Она будет также вызвано многократными временами для каждого из следующих состояний:
enum DSCSTATE { dscNoState = 0, dscOKToDo, dscCancelled, dscSyncBefore, dscAboutToDo, dscFailedToDo, dscSyncAfter, dscDidEvent };
Многократные обращения позволяют Вам захватывать событие в разное время. Например, так как события обычно генерируются в ответ на модификацию состояния курсора элемента управлением, первое дело которое элемент управление источника данных будет делать к событиям это спрашивать разрешение фактически выполнить то действие; следовательно причина для состояния dscOKToDo. Если вся клиентура которая контролирует событие (элемент управление данных, ваша прикладная программа и так далее) принимает событие элемента управления источника данных затем будет двигаться в состояние dscSyncBefore, в котором все ожидающие обработки данные будут очищаться в случае необходимости. Например, если содержание поля редактирования изменилось, изменение будет совершено к курсору. После этого события, источник данных управляет шагами в dscAboutToDo и состоянием dscSyncAfter и в заключение в состоянием dscDidEvent. Они обеспечивают Вас дальнейшими возможностями захватить сообщения из элемента управления источника данных.