www.adept7.kiev.ua
| Форум| Гостевая| Ссылки| Программы| Исходные тексты| Наши партнеры.|
   
| Главная| Рассылки| Услуги| Библиотека| Новости| Авторам| Программистам| Студентам|
delphi c++ assembler
  http://tikitak.narod.ru ---- Главная страница сайта

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

Цель данной тренировки создать приложение, которое умеет обрабатывать сообщения Windows.

Запускаем VC и AppWizard. Имя приложения pr3 выбираем приложение на базе одного документа и сразу Finish. Сообщения от операционной системы могут получать только три класса.

CPr3View
CMainFrame
CAboutDlg
Класс вида, рамки окна и диалогового окна. Для того, чтобы создать функцию обработки сообщения необходимо перейти в окно ClassView нажать правую кнопку мыши и выбрать пункт меню Add windows message habder. В ответ на это действие появится диалоговое окно со списком сообщений, которые можно обработать.

Выбираем сообщение WM_SIZE оно должно появиться в окне справа. После этого двойной шелчок на сообщение. Будет создана функция обработки. Проделайте это для CPr3View, вот полученная функция

void CPr3View::OnSize(UINT nType, int cx, int cy) 
{
	CView::OnSize(nType, cx, cy);
	
	// TODO: Add your message handler code here
	
}
Изменим этот код для того, чтобы вызвать окно сообщения в момент вызова данной функции.
void CPr3View::OnSize(UINT nType, int cx, int cy) 
{
	CView::OnSize(nType, cx, cy);
	
	AfxMessageBox("WM_SIZE");
}
Скомпилируйте и запустите приложение. Вы убидите, что данная функция вызывается при запуске приложения. Поменяйте размер окна и опять произойдет вызов этой функции.

Закоментируйте вызов сообщения AfxMessageBox("WM_SIZE");. И создайте обработку сообщения WM_KILLFOCUS это сообщение будет вызываться каждый раз, когда окно теряет фокус. То есть перекрываться другими окнами. Вот так. Опять для класса CPr3view

void CPr3View::OnKillFocus(CWnd* pNewWnd) 
{
	CView::OnKillFocus(pNewWnd);
	
   AfxMessageBox("WM_KILLFOCUS");
	
}
Опять скомпилируйте и запустите. Каждый раз когда вы будете переключаться на другое окно появится это сообшение. Оно так же появится при закрытии программы. Проверьте сами.

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

........
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);
	
	//AfxMessageBox("WM_SIZE");
	
}

void CPr3View::OnKillFocus(CWnd* pNewWnd) 
{
	CView::OnKillFocus(pNewWnd);
	
   // AfxMessageBox("WM_KILLFOCUS");
	
}


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

By Artem.
Используются технологии uCoz
 

Rambler's Top100 Rambler's Top100

©  Adept Design Studio

Используются технологии uCoz