亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? atlgdi.h

?? WTL7.0所有頭文件,需要的朋友可以成這里下載
?? H
?? 第 1 頁 / 共 5 頁
字號:
// Windows Template Library - WTL version 7.0
// Copyright (C) 1997-2002 Microsoft Corporation
// All rights reserved.
//
// This file is a part of the Windows Template Library.
// The code and information is provided "as-is" without
// warranty of any kind, either expressed or implied.

#ifndef __ATLGDI_H__
#define __ATLGDI_H__

#pragma once

#ifndef __cplusplus
	#error ATL requires C++ compilation (use a .cpp suffix)
#endif

#ifndef __ATLBASE_H__
	#error atlgdi.h requires atlbase.h to be included first
#endif


// protect template members from windowsx.h macros
#ifdef _INC_WINDOWSX
#undef CopyRgn
#undef CreateBrush
#undef CreatePen
#undef SelectBrush
#undef SelectPen
#undef SelectFont
#undef SelectBitmap
#endif //_INC_WINDOWSX

// required libraries
#ifndef _ATL_NO_MSIMG
#pragma comment(lib, "msimg32.lib")
#endif //!_ATL_NO_MSIMG
#ifndef _ATL_NO_OPENGL
#pragma comment(lib, "opengl32.lib")
#endif //!_ATL_NO_OPENGL


/////////////////////////////////////////////////////////////////////////////
// Classes in this file
//
// CPenT<t_bManaged>
// CBrushT<t_bManaged>
// CFontT<t_bManaged>
// CBitmapT<t_bManaged>
// CPaletteT<t_bManaged>
// CRgnT<t_bManaged>
// CDCT<t_bManaged>
// CPaintDC
// CClientDC
// CWindowDC
// CEnhMetaFileInfo
// CEnhMetaFileT<t_bManaged>
// CEnhMetaFileDC


namespace WTL
{

/////////////////////////////////////////////////////////////////////////////
// CPen

template <bool t_bManaged>
class CPenT
{
public:
// Data members
	HPEN m_hPen;

// Constructor/destructor/operators
	CPenT(HPEN hPen = NULL) : m_hPen(hPen)
	{ }

	~CPenT()
	{
		if(t_bManaged && m_hPen != NULL)
			DeleteObject();
	}

	CPenT<t_bManaged>& operator=(HPEN hPen)
	{
		m_hPen = hPen;
		return *this;
	}

	void Attach(HPEN hPen)
	{
		if(t_bManaged && m_hPen != NULL)
			::DeleteObject(m_hPen);
		m_hPen = hPen;
	}
	HPEN Detach()
	{
		HPEN hPen = m_hPen;
		m_hPen = NULL;
		return hPen;
	}

	operator HPEN() const { return m_hPen; }

	bool IsNull() const { return (m_hPen == NULL); }

// Create methods
	HPEN CreatePen(int nPenStyle, int nWidth, COLORREF crColor)
	{
		ATLASSERT(m_hPen == NULL);
		m_hPen = ::CreatePen(nPenStyle, nWidth, crColor);
		return m_hPen;
	}
	HPEN CreatePen(int nPenStyle, int nWidth, const LOGBRUSH* pLogBrush, int nStyleCount = 0, const DWORD* lpStyle = NULL)
	{
		ATLASSERT(m_hPen == NULL);
		m_hPen = ::ExtCreatePen(nPenStyle, nWidth, pLogBrush, nStyleCount, lpStyle);
		return m_hPen;
	}
	HPEN CreatePenIndirect(LPLOGPEN lpLogPen)
	{
		ATLASSERT(m_hPen == NULL);
		m_hPen = ::CreatePenIndirect(lpLogPen);
		return m_hPen;
	}

	BOOL DeleteObject()
	{
		ATLASSERT(m_hPen != NULL);
		BOOL bRet = ::DeleteObject(m_hPen);
		if(bRet)
			m_hPen = NULL;
		return bRet;
	}

// Attributes
	int GetLogPen(LOGPEN* pLogPen) const
	{
		ATLASSERT(m_hPen != NULL);
		return ::GetObject(m_hPen, sizeof(LOGPEN), pLogPen);
	}
	bool GetLogPen(LOGPEN& LogPen) const
	{
		ATLASSERT(m_hPen != NULL);
		return (::GetObject(m_hPen, sizeof(LOGPEN), &LogPen) == sizeof(LOGPEN));
	}
	int GetExtLogPen(EXTLOGPEN* pLogPen) const
	{
		ATLASSERT(m_hPen != NULL);
		return ::GetObject(m_hPen, sizeof(EXTLOGPEN), pLogPen);
	}
	bool GetExtLogPen(EXTLOGPEN& ExtLogPen) const
	{
		ATLASSERT(m_hPen != NULL);
		return (::GetObject(m_hPen, sizeof(EXTLOGPEN), &ExtLogPen) == sizeof(EXTLOGPEN));
	}
};

typedef CPenT<false>		CPenHandle;
typedef CPenT<true>		CPen;


/////////////////////////////////////////////////////////////////////////////
// CBrush

template <bool t_bManaged>
class CBrushT
{
public:
// Data members
	HBRUSH m_hBrush;

// Constructor/destructor/operators
	CBrushT(HBRUSH hBrush = NULL) : m_hBrush(hBrush)
	{ }

	~CBrushT()
	{
		if(t_bManaged && m_hBrush != NULL)
			DeleteObject();
	}

	CBrushT<t_bManaged>& operator=(HBRUSH hBrush)
	{
		m_hBrush = hBrush;
		return *this;
	}

	void Attach(HBRUSH hBrush)
	{
		if(t_bManaged && m_hBrush != NULL)
			::DeleteObject(m_hBrush);
		m_hBrush = hBrush;
	}
	HBRUSH Detach()
	{
		HBRUSH hBrush = m_hBrush;
		m_hBrush = NULL;
		return hBrush;
	}

	operator HBRUSH() const { return m_hBrush; }

	bool IsNull() const { return (m_hBrush == NULL); }

// Create methods
	HBRUSH CreateSolidBrush(COLORREF crColor)
	{
		ATLASSERT(m_hBrush == NULL);
		m_hBrush = ::CreateSolidBrush(crColor);
		return m_hBrush;
	}
	HBRUSH CreateHatchBrush(int nIndex, COLORREF crColor)
	{
		ATLASSERT(m_hBrush == NULL);
		m_hBrush = ::CreateHatchBrush(nIndex, crColor);
		return m_hBrush;
	}
	HBRUSH CreateBrushIndirect(const LOGBRUSH* lpLogBrush)
	{
		ATLASSERT(m_hBrush == NULL);
		m_hBrush = ::CreateBrushIndirect(lpLogBrush);
		return m_hBrush;
	}
	HBRUSH CreatePatternBrush(HBITMAP hBitmap)
	{
		ATLASSERT(m_hBrush == NULL);
		m_hBrush = ::CreatePatternBrush(hBitmap);
		return m_hBrush;
	}
	HBRUSH CreateDIBPatternBrush(HGLOBAL hPackedDIB, UINT nUsage)
	{
		ATLASSERT(hPackedDIB != NULL);
		const void* lpPackedDIB = ::GlobalLock(hPackedDIB);
		ATLASSERT(lpPackedDIB != NULL);
		m_hBrush = ::CreateDIBPatternBrushPt(lpPackedDIB, nUsage);
		::GlobalUnlock(hPackedDIB);
		return m_hBrush;
	}
	HBRUSH CreateDIBPatternBrush(const void* lpPackedDIB, UINT nUsage)
	{
		ATLASSERT(m_hBrush == NULL);
		m_hBrush = ::CreateDIBPatternBrushPt(lpPackedDIB, nUsage);
		return m_hBrush;
	}
	HBRUSH CreateSysColorBrush(int nIndex)
	{
		ATLASSERT(m_hBrush == NULL);
		m_hBrush = ::GetSysColorBrush(nIndex);
		return m_hBrush;
	}

	BOOL DeleteObject()
	{
		ATLASSERT(m_hBrush != NULL);
		BOOL bRet = ::DeleteObject(m_hBrush);
		if(bRet)
			m_hBrush = NULL;
		return bRet;
	}

// Attributes
	int GetLogBrush(LOGBRUSH* pLogBrush) const
	{
		ATLASSERT(m_hBrush != NULL);
		return ::GetObject(m_hBrush, sizeof(LOGBRUSH), pLogBrush);
	}
	bool GetLogBrush(LOGBRUSH& LogBrush) const
	{
		ATLASSERT(m_hBrush != NULL);
		return (::GetObject(m_hBrush, sizeof(LOGBRUSH), &LogBrush) == sizeof(LOGBRUSH));
	}
};

typedef CBrushT<false>		CBrushHandle;
typedef CBrushT<true>		CBrush;


/////////////////////////////////////////////////////////////////////////////
// CFont

template <bool t_bManaged>
class CFontT
{
public:
// Data members
	HFONT m_hFont;

// Constructor/destructor/operators
	CFontT(HFONT hFont = NULL) : m_hFont(hFont)
	{ }

	~CFontT()
	{
		if(t_bManaged && m_hFont != NULL)
			DeleteObject();
	}

	CFontT<t_bManaged>& operator=(HFONT hFont)
	{
		m_hFont = hFont;
		return *this;
	}

	void Attach(HFONT hFont)
	{
		if(t_bManaged && m_hFont != NULL)
			::DeleteObject(m_hFont);
		m_hFont = hFont;
	}
	HFONT Detach()
	{
		HFONT hFont = m_hFont;
		m_hFont = NULL;
		return hFont;
	}

	operator HFONT() const { return m_hFont; }

	bool IsNull() const { return (m_hFont == NULL); }

// Create methods
	HFONT CreateFontIndirect(const LOGFONT* lpLogFont)
	{
		ATLASSERT(m_hFont == NULL);
		m_hFont = ::CreateFontIndirect(lpLogFont);
		return m_hFont;
	}

#if (_WIN32_WINNT >= 0x0500)
	HFONT CreateFontIndirectEx(CONST ENUMLOGFONTEXDV* penumlfex)
	{
		ATLASSERT(m_hFont == NULL);
		m_hFont = ::CreateFontIndirectEx(penumlfex);
		return m_hFont;
	}
#endif //(_WIN32_WINNT >= 0x0500)

	HFONT CreateFont(int nHeight, int nWidth, int nEscapement,
			int nOrientation, int nWeight, BYTE bItalic, BYTE bUnderline,
			BYTE cStrikeOut, BYTE nCharSet, BYTE nOutPrecision,
			BYTE nClipPrecision, BYTE nQuality, BYTE nPitchAndFamily,
			LPCTSTR lpszFacename)
	{
		ATLASSERT(m_hFont == NULL);
		m_hFont = ::CreateFont(nHeight, nWidth, nEscapement,
			nOrientation, nWeight, bItalic, bUnderline, cStrikeOut,
			nCharSet, nOutPrecision, nClipPrecision, nQuality,
			nPitchAndFamily, lpszFacename);
		return m_hFont;
	}
	HFONT CreatePointFont(int nPointSize, LPCTSTR lpszFaceName, HDC hDC = NULL)
	{
		LOGFONT logFont;
		memset(&logFont, 0, sizeof(LOGFONT));
		logFont.lfCharSet = DEFAULT_CHARSET;
		logFont.lfHeight = nPointSize;
		lstrcpyn(logFont.lfFaceName, lpszFaceName, sizeof(logFont.lfFaceName)/sizeof(TCHAR));
		return CreatePointFontIndirect(&logFont, hDC);
	}
	HFONT CreatePointFontIndirect(const LOGFONT* lpLogFont, HDC hDC = NULL)
	{
		HDC hDC1 = (hDC != NULL) ? hDC : ::GetDC(NULL);

		// convert nPointSize to logical units based on hDC
		LOGFONT logFont = *lpLogFont;
		POINT pt;
		pt.y = ::GetDeviceCaps(hDC1, LOGPIXELSY) * logFont.lfHeight;
		pt.y /= 720;    // 72 points/inch, 10 decipoints/point
		::DPtoLP(hDC1, &pt, 1);
		POINT ptOrg = { 0, 0 };
		::DPtoLP(hDC1, &ptOrg, 1);
		logFont.lfHeight = -abs(pt.y - ptOrg.y);

		if(hDC == NULL)
			::ReleaseDC(NULL, hDC1);

		return CreateFontIndirect(&logFont);
	}

	BOOL DeleteObject()
	{
		ATLASSERT(m_hFont != NULL);
		BOOL bRet = ::DeleteObject(m_hFont);
		if(bRet)
			m_hFont = NULL;
		return bRet;
	}

// Attributes
	int GetLogFont(LOGFONT* pLogFont) const
	{
		ATLASSERT(m_hFont != NULL);
		return ::GetObject(m_hFont, sizeof(LOGFONT), pLogFont);
	}
	bool GetLogFont(LOGFONT& LogFont) const
	{
		ATLASSERT(m_hFont != NULL);
		return (::GetObject(m_hFont, sizeof(LOGFONT), &LogFont) == sizeof(LOGFONT));
	}
};

typedef CFontT<false>		CFontHandle;
typedef CFontT<true>		CFont;


/////////////////////////////////////////////////////////////////////////////
// CBitmap

template <bool t_bManaged>
class CBitmapT
{
public:
// Data members
	HBITMAP m_hBitmap;

// Constructor/destructor/operators
	CBitmapT(HBITMAP hBitmap = NULL) : m_hBitmap(hBitmap)
	{ }

	~CBitmapT()
	{
		if(t_bManaged && m_hBitmap != NULL)
			DeleteObject();
	}

	CBitmapT<t_bManaged>& operator=(HBITMAP hBitmap)
	{
		m_hBitmap = hBitmap;
		return *this;
	}

	void Attach(HBITMAP hBitmap)
	{
		if(t_bManaged && m_hBitmap != NULL)
			::DeleteObject(m_hBitmap);
		m_hBitmap = hBitmap;
	}
	HBITMAP Detach()
	{
		HBITMAP hBitmap = m_hBitmap;
		m_hBitmap = NULL;
		return hBitmap;
	}

	operator HBITMAP() const { return m_hBitmap; }

	bool IsNull() const { return (m_hBitmap == NULL); }

// Create and load methods
	HBITMAP LoadBitmap(_U_STRINGorID bitmap)
	{
		ATLASSERT(m_hBitmap == NULL);
		m_hBitmap = ::LoadBitmap(_Module.GetResourceInstance(), bitmap.m_lpstr);
		return m_hBitmap;
	}
	HBITMAP LoadOEMBitmap(UINT nIDBitmap) // for OBM_/OCR_/OIC_
	{
		ATLASSERT(m_hBitmap == NULL);
		m_hBitmap = ::LoadBitmap(NULL, MAKEINTRESOURCE(nIDBitmap));
		return m_hBitmap;
	}
	HBITMAP LoadMappedBitmap(UINT nIDBitmap, UINT nFlags = 0, LPCOLORMAP lpColorMap = NULL, int nMapSize = 0)
	{
		ATLASSERT(m_hBitmap == NULL);
		m_hBitmap = ::CreateMappedBitmap(_Module.GetResourceInstance(), nIDBitmap, (WORD)nFlags, lpColorMap, nMapSize);
		return m_hBitmap;
	}
	HBITMAP CreateBitmap(int nWidth, int nHeight, UINT nPlanes, UINT nBitcount, const void* lpBits)
	{
		ATLASSERT(m_hBitmap == NULL);
		m_hBitmap = ::CreateBitmap(nWidth, nHeight, nPlanes, nBitcount, lpBits);
		return m_hBitmap;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩电影在线免费观看| 一区二区三区在线免费播放| 91福利区一区二区三区| 一本久久综合亚洲鲁鲁五月天| 国产乱码精品一品二品| 国产二区国产一区在线观看| 精品亚洲免费视频| 国产乱人伦偷精品视频免下载 | 色94色欧美sute亚洲线路一久| 国产成人丝袜美腿| 成人免费三级在线| 色香色香欲天天天影视综合网| 色综合网站在线| 日本韩国欧美国产| 色哟哟一区二区| 欧美日韩中字一区| 日韩欧美一级精品久久| 久久这里只有精品首页| 欧美国产日韩a欧美在线观看| 国产精品污污网站在线观看 | 亚洲国产精品自拍| 日韩高清欧美激情| 国产激情91久久精品导航 | 午夜欧美大尺度福利影院在线看| 日本不卡的三区四区五区| 国内精品国产成人国产三级粉色| 高清久久久久久| 欧美无砖专区一中文字| 精品国产三级a在线观看| 中文字幕一区二| 日韩精品欧美精品| 成人在线一区二区三区| 欧美系列一区二区| 国产农村妇女毛片精品久久麻豆| 亚洲日本一区二区| 久久99精品国产91久久来源| 色综合咪咪久久| 日韩精品资源二区在线| 一区二区在线观看视频| 久久国产日韩欧美精品| 日本电影亚洲天堂一区| 日韩一区二区精品| 亚洲欧美日韩国产中文在线| 免费在线成人网| 欧洲一区二区三区在线| 国产精品毛片久久久久久| 琪琪一区二区三区| 欧美怡红院视频| 欧美激情一区二区三区不卡 | 成人精品一区二区三区四区| 欧美一区二区网站| 亚洲最大成人网4388xx| 国产成人福利片| 精品理论电影在线观看| 无码av免费一区二区三区试看| 不卡视频免费播放| 久久婷婷成人综合色| 图片区小说区国产精品视频| 色综合亚洲欧洲| 国产精品不卡一区二区三区| 国产99久久久国产精品潘金网站| 欧美一区二区三区在线| 性感美女极品91精品| 91国产成人在线| 亚洲精品视频自拍| 色综合天天综合| 国产精品国产三级国产普通话99| 国产精品一区在线观看乱码| 精品国产sm最大网站免费看| 久久av资源网| 26uuu精品一区二区| 国产中文字幕一区| 久久先锋资源网| 国产在线精品一区二区夜色| 日韩一区二区三区在线视频| 日韩va欧美va亚洲va久久| 欧美日韩成人在线| 天天色综合成人网| 欧美精品一级二级| 美国三级日本三级久久99| 日韩免费观看高清完整版在线观看| 视频一区视频二区中文| 欧美裸体bbwbbwbbw| 五月天亚洲精品| 欧美电影免费观看高清完整版在线| 日本成人在线电影网| 欧美一二三四在线| 狠狠色狠狠色合久久伊人| 久久蜜桃香蕉精品一区二区三区| 国产一区二区三区在线观看免费视频| 久久久影视传媒| 91色视频在线| 午夜精品久久久久久久久 | 国产综合色精品一区二区三区| 久久久精品国产99久久精品芒果 | 免费成人av在线| 久久亚洲精华国产精华液| 97久久久精品综合88久久| 午夜电影网一区| 久久免费视频一区| 欧美在线视频你懂得| 精品影视av免费| 国产精品久久久久一区二区三区共| 91麻豆视频网站| 免费不卡在线视频| 综合电影一区二区三区 | 国产精品美女久久久久高潮| 欧美日韩一区成人| 国产福利一区二区三区在线视频| 亚洲欧洲性图库| 日韩欧美aaaaaa| 在线视频国内一区二区| 久久精工是国产品牌吗| 亚洲女同一区二区| 日韩欧美成人午夜| 91黄色激情网站| 国产ts人妖一区二区| 午夜成人在线视频| 亚洲色图欧美在线| 欧美精品一区二区久久久| 色综合中文综合网| 亚洲综合丝袜美腿| 国产日韩欧美电影| 欧美一级国产精品| 91成人在线观看喷潮| 国产suv精品一区二区883| 日韩国产精品久久久久久亚洲| 国产精品女同一区二区三区| 日韩一区二区精品葵司在线| 色8久久人人97超碰香蕉987| 国产·精品毛片| 精品中文字幕一区二区小辣椒| 亚洲综合丝袜美腿| 亚洲精品免费播放| 国产精品美女一区二区三区| 久久久久久免费网| 欧美成人综合网站| 欧美日韩一区二区电影| 日本高清免费不卡视频| 91伊人久久大香线蕉| 成人午夜免费电影| 国产高清亚洲一区| 韩国理伦片一区二区三区在线播放| 日韩精品电影在线| 丝袜亚洲另类欧美| 天堂av在线一区| 奇米精品一区二区三区在线观看 | 国产成人欧美日韩在线电影| 久久精品国产一区二区三区免费看 | 国产成人午夜精品影院观看视频 | 欧美日韩不卡在线| 欧美日韩精品二区第二页| 欧美特级限制片免费在线观看| 91丨porny丨在线| 91国产免费观看| 欧美日韩免费观看一区三区| 欧美亚洲动漫另类| 欧美三级资源在线| 日韩一区二区三区电影| 精品va天堂亚洲国产| 国产视频一区二区在线| 中文字幕乱码一区二区免费| 成人免费一区二区三区视频 | 日本不卡的三区四区五区| 老司机午夜精品| 激情欧美日韩一区二区| 国产乱码精品一区二区三| 成人免费观看av| 色噜噜狠狠色综合中国| 欧美性xxxxxxxx| 欧美一级欧美一级在线播放| 久久亚洲二区三区| 国产精品亲子乱子伦xxxx裸| 一区二区三区在线免费| 天天色天天操综合| 国产一区在线看| 成人精品视频一区| 欧美午夜精品理论片a级按摩| 91精品国产欧美日韩| 国产欧美日韩在线| 亚洲一区二区三区视频在线| 麻豆精品在线播放| 成人午夜免费视频| 欧美精品久久久久久久久老牛影院| 久久人人爽爽爽人久久久| 一区二区三区四区蜜桃| 免播放器亚洲一区| 风间由美一区二区三区在线观看 | ...xxx性欧美| 午夜亚洲福利老司机| 成人综合在线观看| 在线播放视频一区| 亚洲婷婷国产精品电影人久久| 日韩精品1区2区3区| 99国产欧美另类久久久精品| 91麻豆精品国产综合久久久久久| 国产网站一区二区| 日韩高清不卡在线| 91片在线免费观看| 久久亚洲影视婷婷|