Шаг 345 - CWnd::OnDSCNotify

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. Они обеспечивают Вас дальнейшими возможностями захватить сообщения из элемента управления источника данных.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 07.01.2002