Графика для Windows средствами DirectDraw


Класс QwertyWin



В программе Qwerty, как и во всех остальных программах этой книги, специализированный класс окна порождается от базового класса DirectDrawWin. В данном случае производный класс называется QwertyWin (см. листинг 6.1).

Листинг 6.1. Класс QwertyWin


class QwertyWin : public DirectDrawWin { public: QwertyWin(); protected: //{{AFX_MSG(QwertyWin) 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: int SelectDriver(); int SelectInitialDisplayMode(); BOOL CreateCustomSurfaces(); void DrawScene(); void RestoreSurfaces(); private: LPDIRECTINPUT dinput; LPDIRECTINPUTDEVICE keyboard;

BOOL esc_pressed; LPDIRECTDRAWSURFACE esc_up, esc_dn;

LPDIRECTDRAWSURFACE space_up, space_dn;

LPDIRECTDRAWSURFACE q_up, q_dn; LPDIRECTDRAWSURFACE w_up, w_dn; LPDIRECTDRAWSURFACE e_up, e_dn; LPDIRECTDRAWSURFACE r_up, r_dn; LPDIRECTDRAWSURFACE t_up, t_dn; LPDIRECTDRAWSURFACE y_up, y_dn;

LPDIRECTDRAWSURFACE rctrl_up, rctrl_dn; LPDIRECTDRAWSURFACE lctrl_up, lctrl_dn; LPDIRECTDRAWSURFACE lalt_up, lalt_dn; LPDIRECTDRAWSURFACE ralt_up, ralt_dn;

};


Прежде чем двигаться дальше, обратите внимание на отсутствие обработчика OnKeyDown(). Во всех программах, рассмотренных нами ранее, функция OnKeyDown() обрабатывала сообщения от клавиатуры. В программе Qwerty мы пользуемся услугами DirectInput и потому не нуждаемся в OnKeyDown().

В самом начале объявляются три обработчика сообщений:

  • OnCreate()

  • OnDestroy()

  • OnActivate()

Функция OnCreate() инициализирует и настраивает DirectInput, а функция OnDestroy() освобождает объекты DirectInput. Функция OnActivate(), вызываемая MFC при получении или потере фокуса, будет использована для повторного захвата клавиатуры.

Две следующие функции, SelectDriver() и SelectInitialDisplayMode(), присутствуют почти во всех наших программах. Они остались в том виде, в котором их создал AppWizard, и потому не требуют обсуждения.




Начало  Назад  Вперед



Книжный магазин