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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? multicolumnsortlistview.cpp

?? 一個(gè)統(tǒng)計(jì)文件大小和程序信息的插件程序(vc或vc.net下使用)
?? CPP
?? 第 1 頁 / 共 2 頁
字號(hào):
	if( wc > MAXCOLWIDTH )
	{
		wc = MAXCOLWIDTH;
	}
	
	CListCtrl::SetColumnWidth( iColumn,wc );  
	SetRedraw(true);
}

/*
Utility function to get rid of all the columns
*/
void CMultiColumnSortListCtrl::DeleteAllColumns()
{
	int iNumCols = GetColumnCount();
	for ( int i = 0; i < iNumCols; i++ )
	{
		DeleteColumn(0);
	}
}

/*
Utility function to get rid of all items.
*/
void CMultiColumnSortListCtrl::DeleteAllItems()
{
	if( GetItemCount() > 0 )
	{
		CListCtrl::DeleteAllItems();	//Ariel Benary <Ariel.Benary@ness.com>
	}
}

/*
Utility function to find the item by item data, make it visible and select.
return the index of the found item or -1 if item not found
*/
int CMultiColumnSortListCtrl::FindShowAndSelect(DWORD dwData, BOOL bSelect /*= TRUE*/)
{
	int nCurrentFilePos = -1;

	//try to find the item
	LVFINDINFO sFindInfo;
	sFindInfo.flags = LVFI_PARAM;
	sFindInfo.lParam = dwData;
	nCurrentFilePos = FindItem(&sFindInfo);

	//once found - select and make visible
	if( 0 <= nCurrentFilePos && bSelect )
	{
		EnsureVisible( nCurrentFilePos, FALSE );
		SetItemState( nCurrentFilePos, LVIS_SELECTED, LVIS_SELECTED );
	}

	return nCurrentFilePos;
}

/*
Utility function to find the item by text, make it visible and select.
return the index of the found item or -1 if item not found
*/
int CMultiColumnSortListCtrl::FindShowAndSelect(LPCTSTR szText, BOOL bSelect /*= TRUE*/)
{
	int nCurrentFilePos = -1;
	
	//try to find the item
	LVFINDINFO sFindInfo;
	sFindInfo.flags = LVFI_STRING;
	sFindInfo.psz = szText;
	nCurrentFilePos = FindItem(&sFindInfo);
	
	//once found - select and make visible
	if( 0 <= nCurrentFilePos && bSelect )
	{
		EnsureVisible( nCurrentFilePos, FALSE );
		SetItemState( nCurrentFilePos, LVIS_SELECTED, LVIS_SELECTED );
	}
	
	return nCurrentFilePos;
}

/*
Utility function to get the number of columns
written by Zafir Anjum
*/
UINT CMultiColumnSortListCtrl::GetColumnCount()
{
	CHeaderCtrl *pHeaderCtrl = (CHeaderCtrl*)/*GetListCtrl().*/GetDlgItem(0);
	return pHeaderCtrl->GetItemCount();
}

/*
Just add some extended styles from the new IE4 stuff.
Of course you can either change the code or change your
derived class's OnCreate to call CListView::OnCreate
*/
//DEL int CMultiColumnSortListCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct) 
//DEL {
//DEL 	if (CListCtrl::OnCreate(lpCreateStruct) == -1)
//DEL 		return -1;
//DEL 	// set list control's style to hilight the entire row
//DEL 	DWORD dwStyle = SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE);
//DEL 	dwStyle |= LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_HEADERDRAGDROP;
//DEL 	SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, (LPARAM)dwStyle);
//DEL 	m_ctlHeaderCtrl.SubclassWindow( GetDlgItem(0)->m_hWnd );		
//DEL 
//DEL 	return 0;
//DEL }

/*
We are only sorting in report view so far.
*/
//DEL BOOL CMultiColumnSortListCtrl::PreCreateWindow(CREATESTRUCT& cs) 
//DEL {
//DEL 	cs.style |= LVS_REPORT;
//DEL 	return CListCtrl::PreCreateWindow(cs);
//DEL }

/*
Utility function to tell you if a sort is taking place
*/
const bool CMultiColumnSortListCtrl::IsSorting() const
{
	return CMultiColumnSortListCtrl::m_bSorting;
}

/*
Utility function to tell you if the control key is being pressed
*/
const int CMultiColumnSortListCtrl::IsControlPressed() const
{
	return (::GetKeyState( VK_CONTROL ) < 0 );
}

/*
Message handler for when a header is clicked.
*/
void CMultiColumnSortListCtrl::OnHeaderClicked(NMHDR* pNMHDR, LRESULT* pResult) 
{
	HD_NOTIFY *pHDN = (HD_NOTIFY *) pNMHDR;
	if( pHDN->iButton == 0 )
	{
		if( IsControlPressed() )
			SortColumn( pHDN->iItem, MULTI_COLUMN_SORT );
		else
			SortColumn( pHDN->iItem, SINGLE_COLUMN_SORT );
	}
	*pResult = 0;
}

/*
Message handler for when control is about to be destroyed.
This is where the column widths are saved.
*/
void CMultiColumnSortListCtrl::OnDestroy() 
{
	SaveColumnSettings();	
	CListCtrl::OnDestroy();
}

/*
Utility function to tell you if a column is in the combined sorted list.
*/
bool CMultiColumnSortListCtrl::NotInCombinedSortedColumnList(int iItem) const
{
	int iNumCombinedSortedColumns = GetNumCombinedSortedColumns();
	for( int i = 0; i < iNumCombinedSortedColumns; i++ )
	{
		if( m_aCombinedSortedColumns[i] == iItem )
			return false;
	}
	return true;
}

/*
Utility function to set the sort state of a column
*/
void CMultiColumnSortListCtrl::SetItemSortState(int iItem, SORT_STATE bSortState)
{
	if( bSortState != GetItemSortState( iItem ) )
	{
		m_lColumnSortStates ^= (1 << iItem);
	}
}

/*
Utility function to get the sort state of a column
*/
const SORT_STATE CMultiColumnSortListCtrl::GetItemSortState( int iItem ) const
{
	return (SORT_STATE)((m_lColumnSortStates) & ( 1 << iItem ));
}

/*
Utility function to set the default sort state of a column
*/
void CMultiColumnSortListCtrl::SetDefaultItemSortState( int iItem, SORT_STATE bSortState )
{
	if( iItem >= 0 && iItem < MAX_COLUMNS )
	{
		m_aDefaultColumnsSort[iItem] = bSortState;
	}
}

/*
Utility function to get the default sort state of a column
*/
const SORT_STATE CMultiColumnSortListCtrl::GetDefaultItemSortState( int iItem ) const
{
	SORT_STATE nRes = DESCENDING;

	if( iItem >= 0 && iItem < MAX_COLUMNS )
	{
		nRes = (SORT_STATE)m_aDefaultColumnsSort[iItem];
	}

	return nRes;
}

/*
Utility function to get you the number of combined sorted columns
*/
const int CMultiColumnSortListCtrl::GetNumCombinedSortedColumns() const
{
	for( int i = 0; i < MAX_COLUMNS; i++ )
		if( m_aCombinedSortedColumns[i] == -1 )
			return i;
	return MAX_COLUMNS;
}

/*
Utility function clear some internal arrays
*/
void CMultiColumnSortListCtrl::EmptyArray( int *pArray, int nVal )
{
	memset( pArray, -1, MAX_COLUMNS );
}

/*
This function will move a clicked column to the end of the combined
column list. This is useful when you move backwards through column clicks.
Like click columns: 0, 1, 2, 1. The array will hold [0,1,2] after the first 3
clicks, this function will change it to [0,2,1] after the 4th click.
*/
void CMultiColumnSortListCtrl::MoveItemInCombinedSortedListToEnd(int iItem)
{
	int iNumCombinedSortedColumns = GetNumCombinedSortedColumns();
	int aCombinedSortedColumns[MAX_COLUMNS];
	memset( aCombinedSortedColumns, -1, MAX_COLUMNS );
	int iItemIndex = FindItemInCombinedSortedList( iItem );
	if( iItemIndex != -1 )
	{
		if( iItemIndex >= 0 )	//Frank Chen <mkchen@iii.org.tw>
		{
			memcpy( aCombinedSortedColumns, m_aCombinedSortedColumns, iItemIndex * sizeof( int ) );
			memcpy( &aCombinedSortedColumns[iItemIndex], &m_aCombinedSortedColumns[iItemIndex + 1], (iNumCombinedSortedColumns - iItemIndex - 1) * sizeof(int) );
		}
	}
	aCombinedSortedColumns[ iNumCombinedSortedColumns - 1 ] = iItem;
	memcpy( m_aCombinedSortedColumns, aCombinedSortedColumns, MAX_COLUMNS * sizeof(int) );
	for( int i = 0; i < MAX_COLUMNS ; i++ )
	{
		if( aCombinedSortedColumns[i] == -1 )
			break;
	}
}

/*
Utility function to find an item in the combined sorted list.
*/
int CMultiColumnSortListCtrl::FindItemInCombinedSortedList( int iItem )
{
	int iNumCombinedSortedColumns = GetNumCombinedSortedColumns();
	for( int i = 0; i < iNumCombinedSortedColumns; i++ )
	{
		if(m_aCombinedSortedColumns[i] == iItem )
			return i;
	}
	return -1;
}

/*
Utility function to look up a columns width in the registry.
If it returns -1 then it means that it was not found in the registry
*/
const int CMultiColumnSortListCtrl::GetRegColumnWidth( int iColumn ) const
{
	int nRes = -1;
	ASSERT( m_strUniqueName.GetLength() );	//You must set a unique name for every listctrl
	
	CString strEntry( m_strUniqueName );
	CString strValue, strSubString;
	CString strSection( m_strColumnWidthSection );
	strValue = AfxGetApp()->GetProfileString( strSection, strEntry, "" );
	AfxExtractSubString(strSubString, strValue, iColumn, ',');
	if( !strSubString.IsEmpty() )
	{
		nRes = atoi( (LPCTSTR)strSubString );
	}

	return nRes;
}

/*
Utility function to Autosize all columns in the case there is no registry entry.
*/
void CMultiColumnSortListCtrl::AutoSizeAllColumns()
{
	int iNumCols = GetColumnCount();
	for( int i = 0; i < iNumCols; i++ )
	{
		AutoSizeColumn( i );
	}
}

/*
Utility function to set the width on the column based on the registry
value and a set minimum column width.
*/
void CMultiColumnSortListCtrl::SetColumnWidth( int nCol )
{
	int iWidth = GetRegColumnWidth( nCol );
	if( iWidth > -1 )
	{
		if( iWidth < MINCOLWIDTH )
		{
			AutoSizeColumn( nCol );
		}
		else
		{
			CListCtrl::SetColumnWidth( nCol, iWidth );
		}
	}
}

/*
Set the column sort type
*/
void CMultiColumnSortListCtrl::SetColumnType( int iCol, SORT_TYPE nType )
{
	if( iCol >= 0 && iCol < MAX_COLUMNS )
	{
		m_aColumnType[iCol] = nType;
	}
}

/*
Get the column sort type
*/
const SORT_TYPE CMultiColumnSortListCtrl::GetColumnType( int iCol ) const
{
	return (iCol >= 0 && iCol < MAX_COLUMNS) ? m_aColumnType[iCol] : TYPE_TEXT;
}

/*
Set the unique name for the registry operations
*/
void CMultiColumnSortListCtrl::SetUniqueName(LPCTSTR lpszUniqueName)
{
	m_strUniqueName = lpszUniqueName;
}

void CMultiColumnSortListCtrl::PreSubclassWindow() 
{
	// TODO: Add your specialized code here and/or call the base class
	m_ctlHeaderCtrl.SubclassWindow( GetDlgItem(0)->m_hWnd );
	
	CListCtrl::PreSubclassWindow();
}

/*
Modified version of InsertColumn to accomodate for the sort type and sort state
*/
int CMultiColumnSortListCtrl::InsertColumn( int nCol, SORT_TYPE nType, SORT_STATE nDefaultSort, const LVCOLUMN* pColumn )
{
	int nRes = CListCtrl::InsertColumn( nCol, pColumn );

	SetColumnType(nRes, nType);
	SetDefaultItemSortState(nRes, nDefaultSort);

	return nRes;
}

/*
Modified version of InsertColumn to accomodate for the sort type and sort state
*/
int CMultiColumnSortListCtrl::InsertColumn( int nCol, SORT_TYPE nType, SORT_STATE nDefaultSort, LPCTSTR lpszColumnHeading, int nFormat /*= LVCFMT_LEFT*/, int nWidth /*= -1*/, int nSubItem /*= -1*/ )
{
	int nRes = CListCtrl::InsertColumn( nCol, lpszColumnHeading, nFormat, nWidth, nSubItem );
	
	SetColumnType(nRes, nType);
	SetDefaultItemSortState(nRes, nDefaultSort);
	
	return nRes;
}

//hidden from the world
int CMultiColumnSortListCtrl::InsertColumn( int nCol, const LVCOLUMN* pColumn )
{
	return CListCtrl::InsertColumn( nCol, pColumn );
}

//hidden from the world
int CMultiColumnSortListCtrl::InsertColumn( int nCol, LPCTSTR lpszColumnHeading, int nFormat /*= LVCFMT_LEFT*/, int nWidth /*= -1*/, int nSubItem /*= -1*/ )
{
	return CListCtrl::InsertColumn( nCol, lpszColumnHeading, nFormat, nWidth, nSubItem);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久成人18免费观看| 午夜精品福利视频网站| 在线观看亚洲精品视频| 视频一区免费在线观看| 日韩欧美你懂的| 99九九99九九九视频精品| 亚洲高清免费在线| 欧美成人一区二区三区在线观看 | 欧美性做爰猛烈叫床潮| 天堂成人国产精品一区| 国产日产欧美一区二区三区| 一本大道av一区二区在线播放| 日本成人在线视频网站| 国产女同性恋一区二区| 欧美浪妇xxxx高跟鞋交| 风间由美一区二区av101 | 91精品国产麻豆| 丁香婷婷深情五月亚洲| 亚洲国产sm捆绑调教视频| 精品国产一区二区三区久久影院| 99国产麻豆精品| 麻豆一区二区在线| 亚洲精品国产精品乱码不99| 欧美精品一区二区在线观看| 欧美在线不卡视频| 日本伊人色综合网| 最新不卡av在线| 精品国产乱码久久久久久牛牛| 在线这里只有精品| 精品一二三四区| 午夜精品久久久久影视| 国产精品伦一区二区三级视频| 日韩欧美成人一区| 在线视频欧美精品| 不卡一区中文字幕| 狠狠色丁香婷婷综合久久片| 午夜久久久久久久久| 日韩一区中文字幕| 久久久久久日产精品| 91精品欧美综合在线观看最新| 91精品1区2区| 99在线精品免费| 国产美女一区二区| 精品在线播放免费| 日韩高清不卡在线| 亚洲国产欧美在线| 亚洲欧洲日本在线| 中文字幕 久热精品 视频在线 | 欧美一级欧美三级| 欧洲生活片亚洲生活在线观看| 成人av免费在线| 国产成人亚洲综合a∨婷婷图片| 日韩电影在线免费| 亚洲二区在线观看| 亚洲一区二区三区四区的| 国产精品国产成人国产三级| 国产肉丝袜一区二区| 久久综合色天天久久综合图片| 日韩欧美一区二区视频| 精品视频1区2区3区| 在线视频欧美精品| 在线视频一区二区三区| 91视视频在线观看入口直接观看www | 91国产丝袜在线播放| 99久久精品免费看国产| 国产精品资源网站| 久久精品国产99国产| 麻豆精品国产传媒mv男同| 久久电影网电视剧免费观看| 蜜桃久久久久久久| 激情综合色综合久久综合| 激情偷乱视频一区二区三区| 韩国av一区二区三区在线观看| 久久 天天综合| 国内精品免费**视频| 国产黄人亚洲片| 99国产一区二区三精品乱码| 91蝌蚪porny| 欧美日韩在线一区二区| 337p亚洲精品色噜噜噜| 精品久久久影院| 国产片一区二区| 亚洲女人的天堂| 亚洲综合在线免费观看| 亚洲成人在线观看视频| 免费人成网站在线观看欧美高清| 国产在线精品国自产拍免费| 国产不卡高清在线观看视频| 91在线视频播放| 精品视频在线免费看| 欧美大尺度电影在线| 久久久久国产精品人| 中文字幕在线播放不卡一区| 亚洲伊人色欲综合网| 日本欧美加勒比视频| 国产精品一卡二| 在线一区二区三区| 日韩一区二区三免费高清| 久久九九99视频| 亚洲靠逼com| 久久99国产精品免费| 不卡影院免费观看| 4438x亚洲最大成人网| 国产日韩欧美a| 亚洲一区二区在线播放相泽| 久久99国产精品免费| 色综合久久中文综合久久97 | www.亚洲激情.com| 欧美中文字幕不卡| 欧美精品一区二区三区蜜桃 | 一本久久综合亚洲鲁鲁五月天| 欧美一区二区三区婷婷月色| 国产欧美日韩麻豆91| 午夜伊人狠狠久久| 福利视频网站一区二区三区| 5月丁香婷婷综合| 国产精品国产三级国产普通话三级 | 91丨九色丨尤物| 欧美一级国产精品| 久久久久久夜精品精品免费| 亚洲午夜免费电影| 国产黄色91视频| 欧美美女激情18p| 久久色.com| 午夜精品123| 国产不卡一区视频| 日韩一区二区视频| 亚洲午夜日本在线观看| 成人一区二区视频| 精品欧美乱码久久久久久1区2区| 亚洲精品少妇30p| 粉嫩高潮美女一区二区三区| 欧美电视剧免费全集观看| 亚洲一区二区欧美激情| 99在线视频精品| 亚洲国产激情av| 国产一区二区影院| 91精品福利在线一区二区三区| 一区二区三区加勒比av| 成人一二三区视频| 精品国产sm最大网站| 日韩精品一区第一页| 色噜噜久久综合| 国产精品视频免费看| 国产在线国偷精品产拍免费yy | 国产一区二区三区在线观看免费| 欧美老肥妇做.爰bbww视频| 亚洲三级理论片| 99久久精品情趣| 国产精品成人免费在线| 国产成人亚洲综合a∨婷婷图片| 精品国产乱码久久久久久1区2区 | 亚洲精品一区二区三区精华液| 美国毛片一区二区| 欧美一区二区国产| 欧美a级理论片| 日韩欧美久久久| 久久国产麻豆精品| 欧美大片免费久久精品三p| 日本欧美韩国一区三区| 69堂精品视频| 美日韩一级片在线观看| 亚洲一区二区高清| 欧美一区二区免费| 免费看黄色91| 337p日本欧洲亚洲大胆精品| 国产精品中文字幕一区二区三区| 久久久久久久av麻豆果冻| 免费在线观看一区| 久久久精品天堂| 亚洲一区精品在线| 欧美第一区第二区| 国精产品一区一区三区mba视频| 国产精品嫩草影院av蜜臀| av中文字幕一区| 日韩成人午夜电影| 久久网站最新地址| 91看片淫黄大片一级在线观看| 午夜精品免费在线| 91麻豆精品国产91久久久久久久久| 国产精品一区在线| 亚洲三级理论片| 精品久久国产97色综合| 国产成人av一区二区三区在线 | 国产999精品久久久久久绿帽| 久久久www成人免费毛片麻豆| 国产成人aaaa| 日韩码欧中文字| 日韩av在线免费观看不卡| 欧美精品一区二区三区四区| 成人黄色在线视频| 国产人久久人人人人爽| 91精品办公室少妇高潮对白| 美女视频黄 久久| 中文字幕不卡的av| 欧美色图第一页| 国产一区二区三区综合| 亚洲视频小说图片| 欧美精品粉嫩高潮一区二区| 国内精品视频666|