|
|
#ifndef __SIMRECT_H_INCLUDED
#define __SIMRECT_H_INCLUDED
/*******************************************************************************
* * (C) COPYRIGHT MICROSOFT CORPORATION, 1998 * * TITLE: SIMRECT.H * * VERSION: 1.0 * * AUTHOR: ShaunIv * * DATE: 7/31/1999 * * DESCRIPTION: Simple rect derived class. Especially handy for window coords. * *******************************************************************************/
#include <windows.h>
class CSimpleRect : public RECT { public: enum CWndRectType { ClientRect, WindowRect };
CSimpleRect(void) { Assign(0,0,0,0); }
CSimpleRect( const CSimpleRect &other ) { Assign(other); }
CSimpleRect( HWND hWnd, CWndRectType type = ClientRect ) { Assign(0,0,0,0); if (ClientRect == type) GetClientRect(hWnd); else GetWindowRect(hWnd); } CSimpleRect( int nLeft, int nTop, int nRight, int nBottom ) { Assign(nLeft,nTop,nRight,nBottom); } CSimpleRect &Assign( const CSimpleRect &other ) { return(Assign(other.left,other.top,other.right,other.bottom)); } CSimpleRect &Assign( int nLeft, int nTop, int nRight, int nBottom ) { left = nLeft; top = nTop; right = nRight; bottom = nBottom; return(*this); } CSimpleRect &operator=( const CSimpleRect &other ) { if (this == &other) return(*this); return(Assign(other)); } static bool ScreenToClient( HWND hwnd, RECT &rc ) { return (::MapWindowPoints( NULL, hwnd, reinterpret_cast<POINT*>(&rc), 2 ) != 0); } static bool ClientToScreen( HWND hwnd, RECT &rc ) { return (::MapWindowPoints( hwnd, NULL, reinterpret_cast<POINT*>(&rc), 2 ) != 0); } CSimpleRect ScreenToClient( HWND hWnd ) const { CSimpleRect rc(*this); ScreenToClient( hWnd, rc ); return(rc); } CSimpleRect ClientToScreen( HWND hWnd ) const { CSimpleRect rc(*this); ClientToScreen( hWnd, rc ); return(rc); } CSimpleRect &GetWindowRect( HWND hWnd ) { ::GetWindowRect( hWnd, this ); return(*this); } CSimpleRect &GetClientRect( HWND hWnd ) { ::GetClientRect( hWnd, this ); return(*this); } int Width(void) const { return(right - left); } int Height(void) const { return(bottom - top); } CSimpleRect &Inflate( int cx, int cy ) { InflateRect( this, cx, cy ); return *this; } CSimpleRect &Offset( int cx, int cy ) { OffsetRect( this, cx, cy ); return *this; } };
#endif //__SIMRECT_H_INCLUDED
|