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

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

?? sortheaderctrl.cpp

?? RFID溫度簽的源碼
?? CPP
字號:
/*----------------------------------------------------------------------
Copyright (C)2001 MJSoft. All Rights Reserved.
          This source may be used freely as long as it is not sold for
					profit and this copyright information is not altered or removed.
					Visit the web-site at www.mjsoft.co.uk
					e-mail comments to info@mjsoft.co.uk
					The code for drawing the arrow in the header control was
					written by Zafir Anjum
File:     SortHeaderCtrl.cpp
Purpose:  Provides the header control, with drawing of the arrows, for
          the list control.
----------------------------------------------------------------------*/

#include "stdafx.h"
#include "SortHeaderCtrl.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

CSortHeaderCtrl::CSortHeaderCtrl()
	: m_iSortColumn( -1 )
	, m_bSortAscending( TRUE )
{
}

CSortHeaderCtrl::~CSortHeaderCtrl()
{
}


BEGIN_MESSAGE_MAP(CSortHeaderCtrl, CHeaderCtrl)
	//{{AFX_MSG_MAP(CSortHeaderCtrl)
		// NOTE - the ClassWizard will add and remove mapping macros here.
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSortHeaderCtrl message handlers

void CSortHeaderCtrl::SetSortArrow( const int iSortColumn, const BOOL bSortAscending )
{
	m_iSortColumn = iSortColumn;
	m_bSortAscending = bSortAscending;

	// change the item to owner drawn.
	HD_ITEM hditem;

	hditem.mask = HDI_FORMAT;
	VERIFY( GetItem( iSortColumn, &hditem ) );
	hditem.fmt |= HDF_OWNERDRAW;
	VERIFY( SetItem( iSortColumn, &hditem ) );

	// invalidate the header control so it gets redrawn
	Invalidate();
}


void CSortHeaderCtrl::DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct )
{
	// attath to the device context.
	CDC dc;
	VERIFY( dc.Attach( lpDrawItemStruct->hDC ) );

	// save the device context.
	const int iSavedDC = dc.SaveDC();

	// get the column rect.
	CRect rc( lpDrawItemStruct->rcItem );

	// set the clipping region to limit drawing within the column.
	CRgn rgn;
	VERIFY( rgn.CreateRectRgnIndirect( &rc ) );
	(void)dc.SelectObject( &rgn );
	VERIFY( rgn.DeleteObject() );

	// draw the background,
	CBrush brush( GetSysColor( COLOR_3DFACE ) );
	dc.FillRect( rc, &brush );

	// get the column text and format.
	TCHAR szText[ 256 ];
	HD_ITEM hditem;

	hditem.mask = HDI_TEXT | HDI_FORMAT;
	hditem.pszText = szText;
	hditem.cchTextMax = 255;

	VERIFY( GetItem( lpDrawItemStruct->itemID, &hditem ) );

	// determine the format for drawing the column label.
	UINT uFormat = DT_SINGLELINE | DT_NOPREFIX | DT_NOCLIP | DT_VCENTER | DT_END_ELLIPSIS ;

	if( hditem.fmt & HDF_CENTER)
		uFormat |= DT_CENTER;
	else if( hditem.fmt & HDF_RIGHT)
		uFormat |= DT_RIGHT;
	else
		uFormat |= DT_LEFT;

	// adjust the rect if the mouse button is pressed on it.
	if( lpDrawItemStruct->itemState == ODS_SELECTED )
	{
		rc.left++;
		rc.top += 2;
		rc.right++;
	}

	CRect rcIcon( lpDrawItemStruct->rcItem );
	const int iOffset = ( rcIcon.bottom - rcIcon.top ) / 4;

	// adjust the rect further if the sort arrow is to be displayed.
	if( lpDrawItemStruct->itemID == (UINT)m_iSortColumn )
		rc.right -= 3 * iOffset;

	rc.left += iOffset;
	rc.right -= iOffset;

	// draw the column label.
	if( rc.left < rc.right )
		(void)dc.DrawText( szText, -1, rc, uFormat );

	// draw the sort arrow.
	if( lpDrawItemStruct->itemID == (UINT)m_iSortColumn )
	{
		// set up the pens to use for drawing the arrow.
		CPen penLight( PS_SOLID, 1, GetSysColor( COLOR_3DHILIGHT ) );
		CPen penShadow( PS_SOLID, 1, GetSysColor( COLOR_3DSHADOW ) );
		CPen* pOldPen = dc.SelectObject( &penLight );

		if( m_bSortAscending )
		{
			// draw the arrow pointing upwards.
			dc.MoveTo( rcIcon.right - 2 * iOffset, iOffset);
			dc.LineTo( rcIcon.right - iOffset, rcIcon.bottom - iOffset - 1 );
			dc.LineTo( rcIcon.right - 3 * iOffset - 2, rcIcon.bottom - iOffset - 1 );
			(void)dc.SelectObject( &penShadow );
			dc.MoveTo( rcIcon.right - 3 * iOffset - 1, rcIcon.bottom - iOffset - 1 );
			dc.LineTo( rcIcon.right - 2 * iOffset, iOffset - 1);		
		}
		else
		{
			// draw the arrow pointing downwards.
			dc.MoveTo( rcIcon.right - iOffset - 1, iOffset );
			dc.LineTo( rcIcon.right - 2 * iOffset - 1, rcIcon.bottom - iOffset );
			(void)dc.SelectObject( &penShadow );
			dc.MoveTo( rcIcon.right - 2 * iOffset - 2, rcIcon.bottom - iOffset );
			dc.LineTo( rcIcon.right - 3 * iOffset - 1, iOffset );
			dc.LineTo( rcIcon.right - iOffset - 1, iOffset );		
		}

		// restore the pen.
		(void)dc.SelectObject( pOldPen );
	}

	// restore the previous device context.
	VERIFY( dc.RestoreDC( iSavedDC ) );

	// detach the device context before returning.
	(void)dc.Detach();
}


void CSortHeaderCtrl::Serialize( CArchive& ar )
{
	if( ar.IsStoring() )
	{
		const int iItemCount = GetItemCount();
		if( iItemCount != -1 )
		{
			ar << iItemCount;

			HD_ITEM hdItem = { 0 };
			hdItem.mask = HDI_WIDTH;

			for( int i = 0; i < iItemCount; i++ )
			{
				VERIFY( GetItem( i, &hdItem ) );
				ar << hdItem.cxy;
			}
		}
	}
	else
	{
		int iItemCount;
		ar >> iItemCount;
		
		if( GetItemCount() != iItemCount )
			TRACE0( _T("Different number of columns in registry.") );
		else
		{
			HD_ITEM hdItem = { 0 };
			hdItem.mask = HDI_WIDTH;

			for( int i = 0; i < iItemCount; i++ )
			{
				ar >> hdItem.cxy;
				VERIFY( SetItem( i, &hdItem ) );
			}
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久精品免费看| 成人激情免费电影网址| 国产精品一区专区| 91视频一区二区三区| 日韩视频一区二区| 亚洲美女在线国产| 国产一区二区三区免费看| 色婷婷av一区二区三区之一色屋| 日韩午夜激情视频| 一区二区成人在线观看| 国产成人精品三级麻豆| 日韩精品中文字幕一区| 亚洲成av人片一区二区梦乃| 成人av影院在线| 久久夜色精品国产噜噜av | 国产日产欧美精品一区二区三区| 一个色妞综合视频在线观看| 国产成人免费视频网站| 久久亚洲综合av| 久草这里只有精品视频| 91精品国产91久久综合桃花| 亚洲二区在线观看| 91美女片黄在线观看91美女| 国产精品萝li| 国产91对白在线观看九色| 精品福利一区二区三区免费视频| 日韩经典一区二区| 在线视频一区二区三区| 一区二区三区在线播| 91在线云播放| 亚洲精品欧美在线| 日本高清成人免费播放| 成人欧美一区二区三区白人| www.亚洲在线| 亚洲男同性恋视频| 91成人在线观看喷潮| 亚洲欧美成人一区二区三区| 色av一区二区| 亚洲国产精品麻豆| 欧美日韩成人综合天天影院 | 在线精品国精品国产尤物884a| 国产精品网站导航| 波多野结衣在线一区| 自拍偷拍亚洲欧美日韩| 色网综合在线观看| 亚洲午夜视频在线观看| 在线播放欧美女士性生活| 天堂一区二区在线| 欧美mv和日韩mv国产网站| 精品在线亚洲视频| 国产欧美日韩在线观看| 99精品视频中文字幕| 一区二区三区欧美亚洲| 在线综合视频播放| 国产一区二区按摩在线观看| 国产精品区一区二区三| 91极品美女在线| 日韩黄色免费电影| 国产亚洲欧美激情| 一本高清dvd不卡在线观看| 午夜精品久久久久久| 中文字幕一区二区三区在线观看| 97精品国产97久久久久久久久久久久| 亚洲精品自拍动漫在线| 日韩欧美一区二区视频| 99re亚洲国产精品| 日本欧洲一区二区| 欧美激情一区二区| 欧美视频你懂的| 久久99热国产| 中文字幕视频一区| 欧美一区二区三区在线| a4yy欧美一区二区三区| 日本成人中文字幕在线视频 | 日韩一区二区精品在线观看| 成人在线一区二区三区| 视频在线观看91| 国产精品理论片| 日韩三级免费观看| 日本精品一级二级| 国产成人免费av在线| 日韩国产欧美视频| 亚洲青青青在线视频| 欧美精品一区二区三区蜜臀| 欧美日韩国产123区| 色综合天天综合网国产成人综合天 | 亚洲三级在线看| 日韩欧美中文字幕一区| 在线视频观看一区| 高清视频一区二区| 麻豆国产精品官网| 亚洲国产另类精品专区| 国产精品成人免费精品自在线观看| 欧美日韩精品一区二区三区蜜桃 | 国产一区二区免费看| 亚洲第一电影网| 日韩欧美你懂的| 在线观看一区日韩| 亚洲欧美日韩电影| 日日摸夜夜添夜夜添亚洲女人| 国产午夜精品在线观看| 欧美一区二区在线视频| 在线日韩国产精品| 99精品国产热久久91蜜凸| 国产精品羞羞答答xxdd| 精品一区二区三区免费视频| 日韩激情在线观看| 天堂成人免费av电影一区| 亚洲卡通欧美制服中文| 亚洲视频在线观看一区| 中文av一区二区| 久久精品人人做人人爽人人| 久久夜色精品国产噜噜av| 日韩精品中午字幕| 欧美va在线播放| 欧美成人精品福利| 欧美电视剧免费观看| 欧美一区二区三区爱爱| 日韩精品一区二区三区视频播放 | 一级女性全黄久久生活片免费| 亚洲日本在线看| 亚洲日本一区二区| 亚洲青青青在线视频| 亚洲小少妇裸体bbw| 婷婷综合五月天| 婷婷国产在线综合| 久久国产麻豆精品| 久久91精品国产91久久小草 | 奇米精品一区二区三区在线观看 | 一区二区三区四区不卡视频| 亚洲影视资源网| 日韩av不卡一区二区| 久久成人精品无人区| 国产乱码字幕精品高清av| 成人免费观看男女羞羞视频| 一本高清dvd不卡在线观看 | 91黄视频在线| 91精品国产一区二区三区蜜臀| 日韩欧美的一区二区| 中文字幕电影一区| 亚洲激情av在线| 免费成人深夜小野草| 国产成人免费网站| 欧美三级在线看| 久久夜色精品一区| 亚洲精品国产第一综合99久久 | 精品第一国产综合精品aⅴ| 久久久99精品免费观看不卡| 亚洲天堂av一区| 蜜臀a∨国产成人精品| 国产一区二区三区电影在线观看| 91亚洲午夜精品久久久久久| 日韩午夜av电影| 成人免费在线观看入口| 蜜桃av噜噜一区| 91小视频免费看| 日韩精品一区二区三区四区视频| 中文字幕制服丝袜成人av | 日韩欧美色综合| 亚洲裸体xxx| 精品一区二区三区免费播放| 一道本成人在线| 久久久蜜桃精品| 亚洲在线视频网站| 国产成人免费在线视频| 欧美一级久久久| 夜夜嗨av一区二区三区网页| 国产一区二区三区在线看麻豆| 在线观看视频91| 国产日产欧美一区二区视频| 免费日韩伦理电影| 在线日韩av片| 亚洲欧美一区二区三区国产精品 | xnxx国产精品| 视频在线观看一区| 91福利视频网站| 亚洲欧洲国产专区| 国产在线一区观看| 欧美一级生活片| 亚洲午夜在线电影| 99精品黄色片免费大全| 国产蜜臀97一区二区三区| 美女高潮久久久| 在线播放国产精品二区一二区四区| 中文字幕免费不卡在线| 国产在线精品一区二区不卡了| 91精品国产综合久久福利软件| 亚洲成av人片| 欧美唯美清纯偷拍| 亚洲人成精品久久久久| 99精品国产91久久久久久| 国产精品你懂的在线欣赏| 国产激情视频一区二区三区欧美| 精品99一区二区三区| 蓝色福利精品导航| 欧美一二三四区在线| 日韩电影免费在线看| 欧美肥大bbwbbw高潮| 青青草伊人久久| 日韩欧美一区二区不卡|