home *** CD-ROM | disk | FTP | other *** search
- /******************************************************************************\
- *
- * SPINCUBE.H
- *
- \******************************************************************************/
-
- #include <custcntl.h>
-
-
-
- /******************************************************************************\
- * SYMBOLIC CONSTANTS
- \******************************************************************************/
-
- #define SPINCUBECLASS "Spincube"
- #define SPINCUBEDESCRIPTION "An animated control"
- #define SPINCUBEDEFAULTTEXT ":-)"
-
- #define CCHSTYLE 20 // size of style string, i.e. "SS_ERASE"
-
- #define NUM_SPINCUBE_STYLES 2
-
- #define SS_ERASE 0x0001 // spincube window styles
- #define SS_INMOTION 0x0002
-
-
- #define SPINCUBE_EXTRA 4 // number of extra bytes for spincube class
-
- #define SPIN_EVENT 1 // timer event id to repaint control
- #ifdef _ALPHA_
- #define SPIN_INTERVAL 0 // milliseconds between repaints. what
- // would be really cool is a way to
- // dynamically adjust the interval-
- // on real fast machines we might
- // almost be able to get decent-looking
- // animation! :)
-
- #else
- #define SPIN_INTERVAL 75 // milliseconds between repaints. what
- // would be really cool is a way to
- // dynamically adjust the interval-
- // on real fast machines we might
- // almost be able to get decent-looking
- // animation! :)
-
- #endif
- #define DID_ERASE 101 // dialog control id's
- #define DID_INMOTION 102
- #define DID_OK 103
-
- #define GWL_SPINCUBEDATA 0 // offset of control's instance data
-
- #define SPINCUBE_REPAINT_BKGND 0x00000001
-
- #define DO_ERASE(hwnd) GetWindowLong(hwnd,GWL_STYLE) & SS_ERASE \
- ? TRUE : FALSE
-
- #define IN_MOTION(hwnd) GetWindowLong(hwnd,GWL_STYLE) & SS_INMOTION \
- ? TRUE : FALSE
-
- #define REPAINT_BKGND(pSCI) pSCI->iOptions&SPINCUBE_REPAINT_BKGND \
- ? TRUE : FALSE
-
- #define IDS_REGCLASSFAIL 16
- #define IDS_UNREGFAIL 17
- #define IDS_DLGBOXFAIL 18
- #define IDS_ALLOCFAIL 19
- #define IDS_CREATEDCFAIL 20
- #define IDS_CREATEBITMAPFAIL 21
-
-
-
- /******************************************************************************\
- * TYPEDEFs
- \******************************************************************************/
-
- typedef struct
- {
- HDC hdcCompat; // the DC that will contain our off-screen
- // image
- HBITMAP hbmSave; // Save previous selected bitmap
- HBITMAP hbmCompat; // The bitmap that will contain the actual
- // image, i.e. we will always do our
- // drawing on this bmp & then blt the
- // result to the screen.
-
- float fCurrentXRotation; // Angle (in radians) to rotate cube about
- float fCurrentYRotation; // x, y, z axis
- float fCurrentZRotation;
-
- float fCurrentXRotationInc; // Amount to inc rotation angle each
- float fCurrentYRotationInc; // time we repaint (and are in motion)
- float fCurrentZRotationInc;
-
- int iCurrentXTranslation; // Distance (in pels) to translate cube
- int iCurrentYTranslation;
- int iCurrentZTranslation;
-
- int iCurrentXTranslationInc; // Amount to inc translation distance each
- int iCurrentYTranslationInc; // time we repaint (and are in motion)
- int iCurrentZTranslationInc;
-
- RECT rcCubeBoundary; // Bounding rectangle (in 2D) of the last
- // cube drawn. We invalidate only this
- // region when we're doing animation
- // and get the WM_TIMER- it's alot more
- // efficient that invalidating the whole
- // control (there's less screen flashing.
-
- int iOptions; // Contains the current options for this
- // ctrl, i.e. erase background.
-
- } SPINCUBEINFO, *PSPINCUBEINFO;
-
-
-
- /******************************************************************************\
- * FUNCTION PROTOTYPES
- \******************************************************************************/
-
- INT CALLBACK SpincubeSizeToText (DWORD, DWORD, HFONT, LPSTR);
- BOOL CALLBACK SpincubeStyle (HWND, LPCCSTYLE);
- LRESULT CALLBACK SpincubeWndProc (HWND, UINT, WPARAM, LPARAM);
- LRESULT CALLBACK SpincubeDlgProc (HWND, UINT, WPARAM, LPARAM);
-