Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
38
Добавлен:
16.02.2016
Размер:
544.77 Кб
Скачать

Методы управления сообщениями

static const MSG* PASCAL GetCurrentMessage ();

Метод возвращает указатель на структуру MSG, содержащую текущее обрабатываемое окном сообщение. Этот метод может быть вызван только из обработчика события OnMessage.

LRESULT Default ();

Метод вызывает процедуру обработки сообщения, предусмотренную по умолчанию.

LRESULT SendMessage (UINT message, WPARAM wParam = 0, LPARAM IParam = 0);

Метод посылает окну указанное сообщение и возвращает результат обработки сообщения.

BOOL PostMessage (UINT message, WPARAM wParam = 0, LPARAM

IParam = C);

Метод помещает сообщение в очередь сообщений окна и, если сообщение передано, возвращает ненулевое значение, не ожидая завершения обработки окном данного сообщения (в отличие от предыдущего метода). BOOL SendNotifyMessage (UINT message, WPARAM wParam, LPARAM IParam);

Метод посылает окну указанное сообщение, возвращая управление сразу или после обработки сообщения, в зависимости от задачи, создавшей данное окно.

Переопределяемые методы

virtual void DoDataExchange (CDataExchange* pDX);

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

Параметры: pDX- указатель объекта CDataExchange.

Переопределение этого метода состоит в описании вызовов методов, связывающих идентификатор элемента управления и переменную класса.

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

  1. создать в редакторе ресурсов диалоговое окно и все его элементы управления для класса, производного от CDialog;

  2. вызвать ClassWizard и определить для созданных ресурсов соответствующие им переменные и диапазоны допустимых значений.

В этом случае ClassWizard будет сам автоматически вставлять код переопределенного метода DoDataExchange. Пример:

// Пример переопределения метода DoDataExchange

void CMyDlg::DoDataExchange(CDataExchange* pDX)

{ CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CMyDlg)

DDX_Text(pDX, IDC_MY1, m_nMyl); // Второй параметр –

// идентификатор ресурса, третий - идентификатор переменной

DDV MinMaxInt(pDX, m nMyl, 1,20); // Диапазон допустимых значений

//}}AFX DATA MAP

}

Методы, вызываемые для обработки сообщений

При использовании библиотеки MFC обработка сообщений выполняется в соответствии с таблицами сообщений. Таблица сообщений класса записывается между макросами BEGIN_MESSAGE_MAP(CWmdow,CParent) и END_MESSAGE_MAP(). В ней указываются методы, используемые для обработки сообщений. В этом разделе будут рассмотрены некоторые методы класса CWnd, используемые для обработки сообщений.

Название вызываемого метода соответствует названию произошедшего события: название метода начинается с префикса On, а название события -с префикса WM_.

virtual BOOL OnCommand (WPARAM wParam, LPARAM IParam);

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

Метод возвращает ненулевое значение, если приложение обработало данное сообщение.

Параметры:

wParam - младшие разряды параметра wParam определяют ID команды элемента меню или элемента управления. Если сообщение инициировано элементом управления, то старшие разряды указывают уведомительное сообщение; если сообщение инициировано ключевой комбинацией клавиш, то 1;| если сообщение поступило от элемента меню, то 0.

IParam - если сообщение инициировано элементом управления, то данный параметр идентифицирует его, в противном случае - 0.

Метод OnCommand просматривает таблицу сообщений элемента управления и вызывает соответствующий метод.

afc_msg void OnActivate (UINT nState, CWnd* pWndOther, BOOL bMinimized);

Метод вызывается в том случае, если оконный объект активизируется или деактивизируется.

Параметры:

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

WAJNACTTVE WA_ACTIVE

WA_CLICKACTTVE

pWndOther - указатель оконного объекта CWnd. (Значение может быть равно NULL.)

Если окно активизируется щелчком мыши, то для него также вызывается метод OnMouseActivate. afx_msg void OnActivateApp (BOOL bActive, HTASK hTask);

Этот метод вызывается для всех окон верхнего уровня при активизации или деактивизации приложения. afx_msg void OnChildActivate ();

Метод вызывается при использовании MDI-интерфейса для дочерних окон, когда происходит щелчок мышью на заголовке окна или когда окно активизируется, перемещается или изменяет размер.

afx_msg void OnCIose {);

Метод вызывается, чтобы информировать окно о необходимости завершения работы и при выходе из приложения. По умолчанию происходит вызов метода DestroyWindow. afx_msg int OnCreate (LPCREATESTRUCT ipCreateStruct);

Метод вызывается при создании Windows-окна методами Create или CreateEx. Для успешного продолжения создания окна метод должен вернуть значение 0; если возвращаемое значение равно -1, то окно будет разрушено.

Параметры:

Соседние файлы в папке VC++Баженова