Шаг 76 - Тренировка - приложение Pr3

Создание проекта

Запускаем VC и AppWizard. Имя приложения pr3 выбираем приложение на базе одного документа и сразу Finish. Мы с Вами будет создавать отклик на сообщение Windows в нашей программе. Выбираем класс. Правой кнопкой мыши вызываем свойства. Дальше Add Windows Message Handles. Вы выбираем сообщения. Щелкаем по нему. Справа в окне появиться выбранное сообщение. Выбираем его и говорим Add Handler.

76_1.gif (24255 b)

Создаем код

Изменим код для того, чтобы вызвать окно сообщения в момент вызова данной функции.

void CPr3View::OnSize(UINT nType, int cx, int cy) 
{
CView::OnSize(nType, cx, cy);
AfxMessageBox("WM_SIZE"); // в момент обработки сообщения появиться диалоговое окно
}

Cоздайте обработку сообщения WM_KILLFOCUS

void CPr3View::OnKillFocus(CWnd* pNewWnd) 
{
CView::OnKillFocus(pNewWnd);
AfxMessageBox("WM_KILLFocus"); // в момент обработки сообщения появиться диалоговое окно
}

Описание

Скомпилируйте и запустите. Каждый раз, когда вы будете переключаться на другое окно появится это сообщение. Оно так же появится при закрытии программы. Проверьте сами. Кроме того сообщение WM_SIZE будет появляться каждый раз при изменение размера окна, кстати при создании приложения тоже.

Что происходит при проведении всех этих процедур? Добавляются описания функций в заголовочном файле класса.

class CPr3View : public CView
{
...........
// Generated message map functions
protected:
//{{AFX_MSG(CPr3View)
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnKillFocus(CWnd* pNewWnd);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

В таблице обработки сообщений добавляются записи.

BEGIN_MESSAGE_MAP(CPr3View, CView)
//{{AFX_MSG_MAP(CPr3View)
ON_WM_SIZE()
ON_WM_KILLFOCUS()
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()

В файле реализации создаются функции.

/////////////////////////////////////////////////////////////////////////////
// CPr3View message handlers

void CPr3View::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
}
void CPr3View::OnKillFocus(CWnd* pNewWnd)
{
CView::OnKillFocus(pNewWnd);
}

Шпаргалка

Можно обрабатывать любые сообщения Windows самостоятельно.


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.