windows-nt/Source/XPSP1/NT/enduser/netmeeting/ui/msconfwb/grptr.hpp
2020-09-26 16:20:57 +08:00

195 lines
4.2 KiB
C++

//
// GRPTR.HPP
// Graphic Pointer Class
//
// Copyright Microsoft 1998-
//
#ifndef __GRPTR_HPP_
#define __GRPTR_HPP_
typedef struct COLOREDICON
{
HICON hIcon;
COLORREF color;
} COLORED_ICON;
//
//
// Class: DCWbGraphicPointer
//
// Purpose: Class representing a remote pointer.
//
// This is an internal object only - it is never passed to the
// Whiteboard Core DLL.
//
//
class DCWbGraphicPointer : public DCWbGraphic
{
friend class WbUser;
public:
//
// Constructors
//
DCWbGraphicPointer(WbUser* _pUser);
//
// Destructor
//
~DCWbGraphicPointer(void);
UINT IsGraphicTool(void) { return enumGraphicPointer;}
//
// Return the rectangle in which the pointer was last drawn. The
// rectangle will be empty if the pointer is not currently drawn. Use
// BoundsRect to get the rectangle which will be occupied by the pointer
// when it is next drawn.
//
void GetDrawnRect(LPRECT lprc);
//
// Activate and deactivate the pointer
//
BOOL IsActive(void) const { return m_bActive; }
void SetActive(WB_PAGE_HANDLE hPage, POINT point);
void SetInactive(void);
//
// Set the color of the pointer
//
void SetColor(COLORREF newColor);
//
// Get and set the current page of the pointer
//
WB_PAGE_HANDLE GetPage(void) const;
void SetPage(WB_PAGE_HANDLE hNewPage);
WbUser * GetUser(void) const { return(m_pUser); }
//
// Return TRUE if this is the local user's pointer
//
BOOL IsLocalPointer(void) const;
//
// Draw the pointer
//
void Draw(HDC hDC) { Draw(hDC, (WbDrawingArea *)NULL); }
void Draw(HDC hDC, WbDrawingArea * pDrawingArea);
//
// Draw the pointer after saving the bits under it to memory
//
void DrawSave(HDC hDC, WbDrawingArea * pDrawingArea);
//
// Erase the pointer from its old position and redraw it in its current
// position.
//
void Redraw(HDC hDC, WbDrawingArea * pDrawingArea);
//
// Undraw the pointer
//
void Undraw(HDC hDC, WbDrawingArea * pDrawingArea);
//
// Update the user information with the pointer position
//
virtual void Update(void);
//
// Operators
//
virtual BOOL operator!=(const DCWbGraphicPointer& pointer) const;
virtual BOOL operator==(const DCWbGraphicPointer& pointer) const;
protected:
//
// Zoom factor set from WBDRAW
//
int m_iZoomSaved;
//
// Create the icon of the correct color for this user
//
HICON CreateColoredIcon(COLORREF color);
//
// Create the bitmap for saving the screen data under the pointer
//
void CreateSaveBitmap(WbDrawingArea * pDrawingArea);
//
// Draw or undraw the pointer (screen and memory versions)
//
BOOL SaveScreen(HDC hDC, WbDrawingArea * pDrawingArea);
BOOL UndrawScreen(HDC hDC, WbDrawingArea * pDrawingArea);
BOOL CopyFromScreen(HDC hDC, WbDrawingArea * pDrawingArea);
BOOL CopyToScreen(HDC hDC, WbDrawingArea * pDrawingArea);
BOOL DrawMemory(void);
BOOL UndrawMemory(void);
BOOL SaveMemory(void);
//
// Manipulate the display DC for pointer operations
//
void PointerDC(HDC hDC, WbDrawingArea * pDrawingArea,
LPRECT lprc, int zoom = 0);
void SurfaceDC(HDC hDC, WbDrawingArea * pDrawingArea);
//
// The user associated with this pointer
//
WbUser* m_pUser;
//
// Flag indicating whether the pointer is active
//
BOOL m_bActive;
//
// Pointer to the bitmap used to save the data under the pointer
//
HBITMAP m_hSaveBitmap;
//
// Handle of bitmap originally supplied with memDC
//
HBITMAP m_hOldBitmap;
//
// Device context used for drawing and undrawing the pointer
//
HDC m_hMemDC;
//
// Handle of icon to be used for drawing
//
HICON m_hIcon;
//
// Width and height of the pointer
//
UINT m_uiIconWidth;
UINT m_uiIconHeight;
//
// Flag indicating whether the pointer is drawn
//
BOOL m_bDrawn;
//
// Rectangle in which the pointer was last drawn
//
RECT m_rectLastDrawn;
};
#endif // __GRPTR_HPP_