region.h

来自「Windows 图形编程 书籍」· C头文件 代码 · 共 79 行

H
79
字号
#pragma

//-----------------------------------------------------------------------------------//
//              Windows Graphics Programming: Win32 GDI and DirectDraw               //
//                             ISBN  0-13-086985-6                                   //
//                                                                                   //
//  Written            by  Yuan, Feng                             www.fengyuan.com   //
//  Copyright (c) 2000 by  Hewlett-Packard Company                www.hp.com         //
//  Published          by  Prentice Hall PTR, Prentice-Hall, Inc. www.phptr.com      //
//                                                                                   //
//  FileName   : region.h						                                     //
//  Description: GDI region wrapper                                                  //
//  Version    : 1.00.000, May 31, 2000                                              //
//-----------------------------------------------------------------------------------//

class KRegion
{
public:
	int       m_nRegionSize;
	int       m_nRectCount;
	RECT *    m_pRect;
	RGNDATA * m_pRegion;

	KRegion()
	{
		m_nRegionSize = 0;
		m_nRectCount  = 0;
		m_pRegion     = NULL;
		m_pRect       = NULL;
	}

	void Reset(void)
	{
		if ( m_pRegion )
			delete [] (char *) m_pRegion;

		m_pRegion     = NULL;
		m_nRegionSize = 0;
		m_nRectCount  = 0;
		m_pRect       = NULL;
	}

	~KRegion()
	{
		Reset();
	}

	BOOL GetRegionData(HRGN hRgn);
	HRGN CreateRegion(XFORM * pXForm);
};


BOOL KRegion::GetRegionData(HRGN hRgn)
{
	Reset();

	m_nRegionSize = ::GetRegionData(hRgn, 0, NULL);
	if ( m_nRegionSize==0 )
		return FALSE;

	m_pRegion = (RGNDATA *) new char[m_nRegionSize];
	if ( m_pRegion==NULL )
		return FALSE;

	::GetRegionData(hRgn, m_nRegionSize, m_pRegion);

	m_nRectCount = m_pRegion->rdh.nCount;
	m_pRect      = (RECT *) & m_pRegion->Buffer;

	return TRUE;
}


HRGN KRegion::CreateRegion(XFORM * pXForm)
{
	return ExtCreateRegion(pXForm, m_nRegionSize, m_pRegion);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?