#ifndef _DDRAW_MAINWINDOW_HPP_ #define _DDRAW_MAINWINDOW_HPP_ #ifndef _COMMON_WINDOW_HPP_ #include #endif #ifndef _COMMON_STRING_HPP_ #include #endif #ifndef _COMMON_SMARTPOINTER_HPP_ #include #endif #ifndef _COMMON_DIBITMAP_HPP_ #include #endif #ifndef _COMMON_BITMAP_HPP_ #include #endif #ifndef _DDRAW_DRAWINGSURFACE_HPP_ #include #endif #ifndef _DDRAW_DIRECT3D_HPP_ #include #endif #ifndef _DDRAW_DEVICE3D_HPP_ #include #endif #ifndef _DDRAW_DIRECTPALETTE_HPP_ #include #endif class DirectDraw; class Device3D; class MainWindow : public Window { public: MainWindow(void); virtual ~MainWindow(); static String className(void); private: enum {MaxRotate=360,MinRotate=-360}; enum {ThetaDelta=10,ViewDelta=5,TurnDelta=20}; enum {inKey=0x49,outKey=0x4F}; enum{DisplayWidth=640,DisplayHeight=480,DisplayBPP=8}; CallbackData::ReturnType paintHandler(CallbackData &someCallbackData); CallbackData::ReturnType destroyHandler(CallbackData &someCallbackData); CallbackData::ReturnType commandHandler(CallbackData &someCallbackData); CallbackData::ReturnType keyDownHandler(CallbackData &someCallbackData); CallbackData::ReturnType keyUpHandler(CallbackData &someCallbackData); CallbackData::ReturnType sizeHandler(CallbackData &someCallbackData); CallbackData::ReturnType timerHandler(CallbackData &someCallbackData); CallbackData::ReturnType createHandler(CallbackData &someCallbackData); CallbackData::ReturnType activateAppHandler(CallbackData &someCallbackData); CallbackData::ReturnType displayChangeHandler(CallbackData &someCallbackData); CallbackData::ReturnType dialogCodeHandler(CallbackData &someCallbackData); WORD shiftKeyPressed(void)const; WORD handleUpArrow(void); WORD handleDownArrow(void); WORD handleLeftArrow(void); WORD handleRightArrow(void); void registerClass(void)const; void insertHandlers(void); void removeHandlers(void); Callback mActivateAppHandler; Callback mDisplayChangeHandler; Callback mPaintHandler; Callback mDestroyHandler; Callback mCommandHandler; Callback mKeyDownHandler; Callback mSizeHandler; Callback mTimerHandler; Callback mCreateHandler; Callback mKeyUpHandler; Callback mDialogCodeHandler; static char szClassName[]; static char szMenuName[]; SmartPointer mDirectDraw; DrawingSurface mPrimarySurface; Direct3D mDirect3D; DirectDevice3D mDirectDevice3D; DirectPalette mDirectPalette; SmartPointer mDevice3D; SmartPointer mDIBitmap; Bitmap mTextureBitmap; PurePalette mPalette; }; inline String MainWindow::className(void) { return String(szClassName); } #endif