GUIBALL.H
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:4k
源码类别:
Windows编程
开发平台:
Visual C++
- /*+==========================================================================
- File: GUIBALL.H
- Summary: Include file for the CGuiBall C++ class. A GuiBall is a C++
- object that uses three independent worker threads to display
- a moving and bouncing ball in the client area of a designated
- window. It is anchored to the Windows GUI (Graphical User
- Interface) environment. This GuiBall object continuously
- paints a ball image based on data it obtains from a virtual
- ball object. This virtual ball object is instantiated as a
- COM object (a COBall) in a separate In-process server,
- FRESERVE.
- GuiBall launches three threads which all continuously and
- asynchronously command the ball to move. GuiBall itself
- provides methods to initialize the GuiBall, paint the ball
- image, and restart the motion.
- For a comprehensive tutorial code tour of GUIBALL's contents
- and offerings see the tutorial FRECLIEN.HTM file. For more
- specific technical details on the internal workings see the
- comments dispersed throughout the GUIBALL source code.
- Classes: CThreadInitData, CGuiBall
- Origin: 9-8-97: atrent - Created for COM Tutorial Samples. [Revised]
- ----------------------------------------------------------------------------
- This file is part of the Microsoft COM Tutorial Code Samples.
- Copyright (C) Microsoft Corporation, 1997. All rights reserved.
- This source code is intended only as a supplement to Microsoft
- Development Tools and/or on-line documentation. See these other
- materials for detailed information regarding Microsoft code samples.
- THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
- KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
- PARTICULAR PURPOSE.
- ==========================================================================+*/
- #if !defined(GUIBALL_H)
- #define GUIBALL_H
- #if defined(__cplusplus)
- // Here are constants for the delays in millisecons that control
- // the incremental motion of the ball and how often a snapshot of
- // the ball image is painted.
- enum { BALL_PAINT_DELAY = 33, BALL_MOVE_DELAY = 222 };
- // A small utility struct providing an encapsulation of data needed when
- // worker threads are initialized.
- struct CThreadInitData
- {
- HWND m_hWnd;
- IBall* m_pIBall;
- DWORD m_nDelay;
- };
- /*C+C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C+++C
- Class: CGuiBall
- Summary: Class to encapsulate the displayable Graphical User
- Interface GUI Ball object.
- Methods: CGuiBall
- Constructor.
- ~CGuiBall
- Destructor.
- BOOL Init(HWND hWnd);
- Initialize the GuiBall.
- void PaintBall(void);
- Paint one image of the Ball.
- void Restart(void);
- Restart the process including clear window, move ball to
- start position, restart motion.
- void PaintWin(void);
- Repaint the window but don't restart motion.
- C---C---C---C---C---C---C---C---C---C---C---C---C---C---C---C---C---C---C-C*/
- class CGuiBall
- {
- private:
- HWND m_hWnd;
- IBall* m_pIBall;
- COLORREF m_crColor;
- // Pointers to thread init data structures.
- CThreadInitData m_BallThreadData1;
- CThreadInitData m_BallThreadData2;
- CThreadInitData m_BallThreadData3;
- public:
- // Some member variables to store thread ids.
- DWORD m_dwBallThread1;
- DWORD m_dwBallThread2;
- DWORD m_dwBallThread3;
- // An array of handles to the ball threads.
- HANDLE m_hBallThreads[3];
- CGuiBall(void);
- ~CGuiBall(void);
- BOOL Init(HWND hWnd);
- void PaintBall(void);
- void Restart(void);
- void PaintWin(void);
- };
- #endif // __cplusplus
- #endif