Класс SmearWin
Основная функциональность программы Smear обеспечивается классом
SmearWin (см. листинг 6.4).
Листинг 6.4. Класс SmearWin
class SmearWin : public DirectDrawWin { public: SmearWin(); protected: //{{AFX_MSG(SmearWin) afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); afx_msg void OnDestroy(); afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized); //}}AFX_MSG DECLARE_MESSAGE_MAP() private: BOOL CreateFlippingSurfaces(); private: int SelectDriver(); int SelectInitialDisplayMode(); BOOL CreateCustomSurfaces(); void DrawScene(); void RestoreSurfaces(); private: BOOL InitKeyboard(); BOOL InitMouse(); private: LPDIRECTINPUT dinput; LPDIRECTINPUTDEVICE mouse; LPDIRECTINPUTDEVICE keyboard; LPDIRECTDRAWSURFACE sphere; int x, y; };
|
В классе объявлены три обработчика:
- OnCreate()
- OnDestroy()
- OnActivate()
Функция
OnCreate() инициализирует DirectInput, а также готовит к работе мышь и клавиатуру. Функция
OnDestroy() освобождает объекты DirectInput, инициализированные функцией
OnCreate(). Функция
OnActivate() захватывает клавиатуру в начале работы и при повторной активизации приложения.
Затем следует переопределенная функция
DirectDrawWin::CreateFlippingSurfaces(). Нам не нужна переключаемая первичная поверхность, которая по умолчанию предоставляется классом
DirectDrawWin, поэтому мы переопределяем эту функцию и создаем первичную поверхность, неспособную к переключению страниц.
Следующие пять функций присутствуют в большинстве наших программ. Внимания среди них заслуживает разве что функция
DrawScene(). Она обнаруживает ввод с клавиатуры или от мыши и соответствующим образом обновляет экран.
Затем класс
SmearWin объявляет функции
InitMouse() и
InitKeyboard(). Функция
OnCreate() возлагает на них ответственность за инициализацию устройств.
Наконец, мы объявляем несколько переменных. Переменная
dinput — указатель на интерфейс
DirectInput, она используется для работы с DirectInput после инициализации. Переменные
mouse и
keyboard указывают на интерфейсы
DirectInputDevice, они инициализируются функциями
InitMouse() и
InitKeyboard() соответственно. Указатель на поверхность sphere и целые переменные
x и
y предназначены для вывода и позиционирования единственной поверхности приложения.
Содержание Назад Вперед