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


Определение класса



В программе BmpView, как и в других программах этой книги, класс окна приложения является производным от класса DirectDrawWin. К сожалению, по нашему соглашению об именах имя производного класса образуется из имени приложения и суффикса Win. Следовательно, класс окна приложения BmpView называется BmpViewWin, что выглядит несколько неуклюже. Объявление класса BmpViewWin приведено в листинге 5.5.

Листинг 5.5. Класс BmpViewWin


class BmpViewWin : public DirectDrawWin { public: BmpViewWin(); protected: //{{AFX_MSG(BmpViewWin) afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags); afx_msg void OnRButtonDown(UINT nFlags, CPoint point); afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); afx_msg void OnDestroy(); //}}AFX_MSG DECLARE_MESSAGE_MAP() private: int SelectInitialDisplayMode(); BOOL CreateCustomSurfaces() { return TRUE; } void DrawScene(); void RestoreSurfaces(); void GetSystemPalette(); void ShowDialog(); BOOL LoadBmp(); void PageUp(); void PageDown(); void Home(); void End(); void Left(int inc=4); void Right(int inc=4); void Up(int inc=4); void Down(int inc=4); private: BmpDialog* bmpdialog; LPDIRECTDRAWPALETTE syspal;

CString fullfilename; CString filename; CString pathname;

CRect displayrect; LPDIRECTDRAWSURFACE bmpsurf; CRect bmprect; int x,y; int xscroll, yscroll; int xlimit, ylimit; BOOL update_screen; DisplayModeArray palettemode, nonpalettemode; };


Единственной открытой (public) функцией класса является конструктор, используемый для инициализации переменных. Далее мы объявляем четыре обработчика сообщений:

  • OnKeyDown()

  • OnRButtonDown()

  • OnCreate()

  • OnDestroy()

Функция OnKeyDonw() обрабатывает нажатия нескольких клавиш, среди которых клавиши со стрелками, Home, End, Page Up, Page Down, Enter, пробел и Escape.

Функции OnCreate() и OnDestroy() предназначены соответственно для инициализации и освобождения структур данных приложения. В частности, функция OnCreate() создает диалоговое окно для выбора BMP-файла, а функция OnDestroy() уничтожает его.



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



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