}
break:
case GRAPHICS:

//Пуск и останов движения колеса сводится к созданию и уничтожению //таймера 1. {

static int TimerOn-0: //Первоначально здесь ноль, поэтому первый выбор //пункта Graphics запустит движение. При втором выборе того же пункта //движение остановится.

if(TimerOn) {TimerOn - 0; KillTimerC hWnd. 1 ):}
else {TimerOn - 1; SetTimer(hWnd.1.40.NULL);}
}
break

case ID_DEM0: //При выборе пункта Обучение устанавливается Demo-3: //признак работы в режиме обучения и вызывается меню Work DefWi ndowProc (hWnd. WMJYSCOMMAND. SC_KEYMENU.1W'): break;

}
}

Модуль WndPoc.cpp содержит оконную процедуру, как это показано в листинге 5.14.

Листинг 5.14

#include <windows.h> #include "Main.h"
LRESULT API ENTRY InputWndProc (HWND hWnd.UINT message.
WPARAM wParam.LPARAM lParam)
{
switch (message) {
case WM_DESTROY:
KillTimerC hWnd. 1 );
PostQuitMessage(O): break:

case WM_COMMAND: //Приходит при выборе терминального пункта меню.

OnMeniKhWnd. message. wParam. lParam):

//Команда меню указана в младшем слове wParam. break: Л case WMJNTERIDLE:

if(Demo) OnEnterIdle(hWnd.wParam.lParam); break:
case WMJCEYUP:

PrintInt(hWnd.l0.2."Kofl клавиши *x", wParam): Взаимодействие меню и приложения

//Вывод кода нажатой клавиши, break;

case WMJIZE:
GetCli entRect(hWnd.&rClient):

//Это сообщение приходит при изменении размера окна, и данная //функция обновляет содержание rClient. break;

case WMJIMER:
OnTimer(hWnd. message. wParam. IParam); break;
}
return DefWindowProc(hWnd.message.wParam.lParam); }

Основным отличием оконной процедуры от предыдущих проектов является явная обработка сообщения WM_ENTERIDLE. Сообщение приходит после того, как подменю будет отображено на экране. Если установлен режим обучения, то вызывается функция OnEnterldleChWnd. wParam. IParam).

Сообщения WM_TTMER порождаются таймерами. В приложении используется три таймера. Операторы создания первого таймера, тактирующего движение колеса, и второго таймера, отсчитывающего время индикации подсказки в текстовой области, показаны выше, в функции OnMenuO. Таймер 10 создается в функции OnEnterldleC) при отработке программы демонстрации, вызванной пунктом Обучение.


⇐ Предыдущая| |Следующая ⇒