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

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

?? tsyslistviewex.cpp

?? VC實現word 和ACCESS數據庫的連接
?? CPP
?? 第 1 頁 / 共 3 頁
字號:

/************************************
  REVISION LOG ENTRY
  Revision By: Mihai Filimon
  Revised on 5/22/98 9:23:23 AM
  Comments: Tsyslistviewex.cpp : implementation file
 ************************************/

#include "stdafx.h"
#include "Tsyslistviewex.h"
#include "resource.h"

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

#define scanCodeS 0x13

/////////////////////////////////////////////////////////////////////////////
// CTsyslistviewex

TCHAR CTsyslistviewex::m_cImageTextSeparator = TCHAR(':');


// Function name	: CTsyslistviewex::CTsyslistviewex
// Description	    : constructor
//					In contructor u must set the height of item list. (MeasureItem is called before
//					PreSubclassWindow!). U can not modify item height at runtime, therefore.
// Return type		: void
// Argument         : int nHeightRel ; set item height
CTsyslistviewex::CTsyslistviewex(int nHeightRel)
{
	m_fctDrawItem = CTsyslistviewex::DrawItemNoGrid;
	m_nHeightRel = nHeightRel;
	m_bSorted = false;
	m_bSortWhenClickHeader = TRUE;
	m_nSortItems = 0;
	m_nIProgress = 0;
	m_bSaveHeader = false;
	ResetBoldLines();
}

// Function name	: CTsyslistviewex::~CTsyslistviewex
// Description	    : destructor
// Return type		: void
CTsyslistviewex::~CTsyslistviewex()
{
	// Remove the CTColumnBitmap from m_bmpColumns
	POSITION posBmp = m_bmpColumns.GetStartPosition( );
	while (posBmp)
	{
		CTColumnBitmap* pBitmap = NULL;
		int nColumn = 0;
		m_bmpColumns.GetNextAssoc( posBmp , nColumn,  pBitmap );
		if (pBitmap)
			delete pBitmap;
	}
	m_bmpColumns.RemoveAll();
	
	// Remove the CTColumnBitmap from m_bmpCells
	posBmp = m_bmpCells.GetStartPosition( );
	while (posBmp)
	{
		CTColumnBitmap* pBitmap = NULL;
		DWORD nKey = 0;
		m_bmpCells.GetNextAssoc( posBmp , nKey,  pBitmap );
		if (pBitmap)
			delete pBitmap;
	}
	m_bmpCells.RemoveAll();
}

// Function name	: CTsyslistviewex::IsHeaderSaved
// Description	    : accessor: header saved
// Return type		: BOOL ;Return TRUE if EnableSaveHeader was called
BOOL CTsyslistviewex::IsHeaderSaved()
{
	return m_bSaveHeader;
}

// Function name	: CTsyslistviewex::GetRegisteredSort
// Description	    : Read form registry in dest for Sort:ID. 
// Return type		: BOOL ; Return TRUE if key exist.
// Argument         : CString & dest ; string to put value into
BOOL CTsyslistviewex::GetRegisteredSort(CString & dest)
{
	BOOL bResult = false;
	if (IsHeaderSaved())
	{
		CString secid; secid.Format(_T("Sort:%08X"), GetDlgCtrlID());
		CString result = AfxGetApp()->GetProfileString(LIST_SECTION, secid, _T("Default"));
		if (result != _T("Default"))
		{
			dest = result;
			bResult = true;
		}
	}
	return bResult;
}

// Function name	: CTsyslistviewex::SaveHeader
// Description	    : Save widths and sort columns in registry in fromat:
//							Header:ID = Column1:C:126, ...
//							Sort:ID = 1D,2,3 ...
// Return type		: void 
void CTsyslistviewex::SaveHeader()
{
	if (IsHeaderSaved())
	{
		CString secid; secid.Format(_T("Header:%08X"), GetDlgCtrlID());
		AfxGetApp()->WriteProfileString(LIST_SECTION, secid, (LPCTSTR)GetHeaderString());
		secid.Format(_T("Sort:%08X"), GetDlgCtrlID());
		AfxGetApp()->WriteProfileString(LIST_SECTION, secid, (LPCTSTR)GetHeaderSortString());
	}
}

BEGIN_MESSAGE_MAP(CTsyslistviewex, CListCtrl)
	//{{AFX_MSG_MAP(CTsyslistviewex)
	ON_WM_LBUTTONDOWN()
	ON_NOTIFY_REFLECT(LVN_COLUMNCLICK, OnColumnclick)
	ON_WM_CHAR()
	//}}AFX_MSG_MAP
	ON_WM_MEASUREITEM_REFLECT()
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTsyslistviewex message handlers

// Function name	: CTsyslistviewex::PreSubclassWindow
// Description	    : Called when user subclass list control form resource
// Return type		: void 
void CTsyslistviewex::PreSubclassWindow( )
{
	// Must be owner draw and report mode....
	ModifyStyle(LVS_SMALLICON | LVS_LIST | LVS_ICON , LVS_OWNERDRAWFIXED | LVS_REPORT);

	m_pOldHeaderCtrl = GetDlgItem(0);

	// Create different fonts..
	if (CFont* pFont = GetFont())
	{
		LOGFONT lf;
		pFont->GetLogFont(&lf);
		lf.lfWeight = FW_BOLD;
		m_boldFont.CreateFontIndirect(&lf);
		lf.lfWeight = FW_NORMAL;
		lf.lfItalic = TRUE;
		m_italicFont.CreateFontIndirect(&lf);
		lf.lfWeight = FW_BOLD;
		lf.lfItalic = TRUE;
		m_italicBoldFont.CreateFontIndirect(&lf);
	}

	SetWindowLong(m_hWnd, GWL_USERDATA , LIST_SUBCLASSED);
}

// Function name	: CTsyslistviewex::OnLButtonDown
// Description	    : If user click in list ctrl, test item, subItem
// Return type		: void 
// Argument         : UINT nFlags
// Argument         : CPoint point
void CTsyslistviewex::OnLButtonDown(UINT nFlags, CPoint point)
{
	SetFocus();
	int item = -1, subItem = -1 ;
	item = HitTestEx(point, subItem);
	CListCtrl::OnLButtonDown(nFlags, point);
}

// Function name	: CTsyslistviewex::MakeShortString
// Description	    : Return shorted string lpszLong in device pDC
// Return type		: LPCTSTR 
// Argument         : CDC* pDC
// Argument         : LPCTSTR lpszLong
// Argument         : int nColumnLen
// Argument         : int nOffset
LPCTSTR CTsyslistviewex::MakeShortString(CDC* pDC, LPCTSTR lpszLong, int nColumnLen, int nOffset)
{
	static const TCHAR szThreeDots[] = _T("...\0");
	static TCHAR szShort[MAX_PATH];

	int nStringLen = strlen(lpszLong);

	if(nStringLen == 0 ||
		(pDC->GetTextExtent(lpszLong, nStringLen).cx + nOffset) <= nColumnLen)
	{
		return(lpszLong);
	}

	strcpy(szShort,lpszLong);
	int nAddLen = pDC->GetTextExtent(szThreeDots,strlen(szThreeDots)).cx;

	for(int i = nStringLen-1; i > 0; i--)
	{
		szShort[i] = '\0';
		if((pDC->GetTextExtent(szShort, i).cx + nOffset + nAddLen)
			<= nColumnLen)
		{
			break;
		}
	}

	strcat(szShort, szThreeDots);
	return(szShort);
}

// Function name	: CTsyslistviewex::DrawCell
// Description	    : Draw at pDC in drawRect cell(nItem,nColumn) with format
// Return type		: void 
// Argument         : CDC* pDC
// Argument         : CRect& drawRect
// Argument         : int nItem
// Argument         : int nColumn
void CTsyslistviewex::DrawCell(CDC* pDC, CRect& drawRect, DWORD format, int nItem, int nColumn)
{
	static TCHAR szBuff[MAX_PATH];
	LPCTSTR pszText;
	GetItemText(nItem, nColumn, szBuff, sizeof(szBuff));
	{
		CTColumnBitmap* pBitmap = GetBitmapCell(GetItemData(nItem),nColumn);
		int dxBitmap = 0;
		CString sImageBitmap, sText(szBuff);
		if (pBitmap)
		{
			dxBitmap = min(pBitmap->GetWidth(),drawRect.Width());
			int p = sText.Find(m_cImageTextSeparator);
			sImageBitmap = sText.Left(max(0,p));
			sText = sText.Mid(p + 1);
			if (p < 0)
			{
				sImageBitmap = sText;
				sText.Empty();
			}
		}


		pszText = MakeShortString(pDC, (LPCTSTR)sText, (drawRect.right - (drawRect.left + dxBitmap + OFFSET)), OFFSET);
		if (*pszText != TCHAR('\0'))
		{
			UINT nJustify = DT_LEFT;														   
			if(pszText == sText)
			{
				switch(format & LVCFMT_JUSTIFYMASK)
				{
				case LVCFMT_RIGHT:
					nJustify = DT_RIGHT;
					break;
				case LVCFMT_CENTER:
					nJustify = DT_CENTER;
					break;
				default:
					break;
				}
			}
			drawRect.left = drawRect.left + dxBitmap + OFFSET;
			pDC->DrawText(pszText, -1, drawRect, nJustify | DT_SINGLELINE | DT_NOPREFIX | DT_VCENTER);
			drawRect.left = drawRect.left -(dxBitmap + OFFSET);
		}

		if (dxBitmap)
		{
			int nImageColumn = atoi(sImageBitmap);
			int x = drawRect.left;
			CRect rectImage = pBitmap->GetRectImage(nImageColumn);
			pBitmap->Put(nImageColumn, pDC, x , drawRect.top + (drawRect.Height() - rectImage.Height())/2, dxBitmap);
		}
	}

}

// Function name	: CTsyslistviewex::DrawItemGrid
// Description	    : Draw item with grid lines
// Return type		: void 
// Argument         : LPDRAWITEMSTRUCT lpDrawItemStruct
void CTsyslistviewex::DrawItemGrid(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
	// device contextul itemului
	CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
	
	// dreptunghiul corespunzator itemului
	CRect rcItem(lpDrawItemStruct->rcItem);

	// identificatorul itemului
	int nItem = lpDrawItemStruct->itemID;
	

	BYTE value = 0;
	CFont* pOldFont = NULL;
	if (m_mapRowsBold.Lookup(lpDrawItemStruct->itemData, value))
		pOldFont = (CFont*)pDC->SelectObject(&m_boldFont);
	if (m_mapRowsItalic.Lookup(lpDrawItemStruct->itemData, value))
	{
		CFont* pF = (CFont*)pDC->SelectObject(&m_italicFont);
		if (pOldFont)
			pF = (CFont*)pDC->SelectObject(&m_italicBoldFont);
		else
			pOldFont = pF;
	}
		
	// culori
	COLORREF clrTextSave, clrBkSave;
	// get item data
	LV_ITEM lvi;
	lvi.mask = LVIF_STATE;
	lvi.iItem = nItem;
	lvi.iSubItem = 0;
	lvi.stateMask = 0xFFFF;		// get all state flags
	GetItem(&lvi);

	BOOL bFocus = ((lvi.state & LVIS_FOCUSED) == LVIS_FOCUSED);
	BOOL bSelected = (GetStyle() & LVS_SHOWSELALWAYS) && (lvi.state & LVIS_SELECTED);
	bSelected = bSelected || (lvi.state & LVIS_DROPHILITED);

	// set colors if item is selected
	CRect rcAllLabels;
	GetItemRect(nItem, rcAllLabels, LVIR_BOUNDS);

	if (bSelected)
	{
		clrTextSave = pDC->SetTextColor(::GetSysColor(COLOR_HIGHLIGHTTEXT));
		clrBkSave = pDC->SetBkColor(::GetSysColor(COLOR_HIGHLIGHT));
	}

	pDC->FillRect(rcAllLabels, &CBrush(::GetSysColor(bSelected ? COLOR_HIGHLIGHT : COLOR_WINDOW)));

	// draw item
	CBrush brush(RGB(128,128,128));
	GetItemRect(nItem, rcItem, LVIR_LABEL);
	LV_COLUMN lvc;
	 lvc.mask = LVCF_FMT | LVCF_WIDTH;
	rcItem.OffsetRect(-OFFSET,0);
	for(int nColumn = 0; GetColumn(nColumn, &lvc); nColumn++)
	{
		rcItem.right = rcItem.left + lvc.cx;

		CRect drawRect(rcItem);
		drawRect.InflateRect(-1,-1);
		pDC->FrameRect(drawRect, &brush);
		drawRect.OffsetRect(1,0);
		drawRect.InflateRect(-2,0);

		DrawCell(pDC,drawRect,lvc.fmt, nItem,nColumn);

		rcItem.left = rcItem.right;
	}

	pDC->SelectObject(pOldFont);

	// draw focus rectangle if item has focus
	if (bFocus)
		pDC->DrawFocusRect(rcAllLabels);

	// set original colors if item was selected
	if (bSelected)
	{
		pDC->SetTextColor(clrTextSave);
		pDC->SetBkColor(clrBkSave);
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色94色欧美sute亚洲线路二| 无码av中文一区二区三区桃花岛| 国产精品视频免费看| 亚洲午夜精品久久久久久久久| 美女视频一区在线观看| 波多野结衣欧美| 精品国产伦理网| 亚洲综合色噜噜狠狠| 成人不卡免费av| 欧美mv和日韩mv国产网站| 午夜一区二区三区视频| 色噜噜偷拍精品综合在线| 久久奇米777| 精品一区二区三区在线视频| 欧美午夜影院一区| 亚洲欧美另类图片小说| 久久嫩草精品久久久精品一| 欧美日本在线视频| 日韩精品一区二区三区视频在线观看 | 精品一区二区三区日韩| 欧美视频在线播放| 亚洲国产色一区| 91污片在线观看| 中文字幕中文在线不卡住| 国产精品自产自拍| 亚洲精品在线三区| 国产乱码精品1区2区3区| 日韩午夜激情视频| 奇米影视一区二区三区| 欧美高清激情brazzers| 亚洲国产精品久久久久婷婷884| 99久久精品免费观看| 欧美激情中文字幕一区二区| 国产成人在线影院| 国产精品久久久久久久久免费相片| 国产成人免费视频网站高清观看视频| 日韩三级视频在线看| 捆绑紧缚一区二区三区视频| 欧美成va人片在线观看| 精品一区二区免费视频| 精品第一国产综合精品aⅴ| 激情综合色综合久久综合| 精品国产一二三| 东方aⅴ免费观看久久av| 日本一区二区三级电影在线观看| 国产成人精品三级| 国产精品理伦片| 欧美中文字幕亚洲一区二区va在线| 亚洲欧美日韩中文字幕一区二区三区 | 国产精品国产三级国产普通话99| av成人老司机| 亚洲成a人在线观看| 精品国产一二三| 成人听书哪个软件好| 亚洲欧洲另类国产综合| 欧美网站大全在线观看| 精品一区二区三区蜜桃| 中文字幕乱码亚洲精品一区| 91麻豆视频网站| 蜜桃在线一区二区三区| 国产精品沙发午睡系列990531| 色偷偷久久一区二区三区| 日韩高清一区在线| 日本一区二区视频在线观看| 欧美亚洲愉拍一区二区| 国内久久精品视频| 一区二区三区国产精品| 日韩你懂的电影在线观看| 成人午夜碰碰视频| 日本视频一区二区| 中文字幕欧美激情| 日韩欧美三级在线| 99精品欧美一区二区蜜桃免费 | 亚洲欧美综合在线精品| 91麻豆精品国产91久久久久| 成人性生交大片免费看中文| 石原莉奈一区二区三区在线观看| 亚洲国产精品ⅴa在线观看| 欧美日韩国产美女| 成人av网站在线| 日本aⅴ精品一区二区三区| 亚洲女人小视频在线观看| 日韩精品一区二区三区视频在线观看| 91在线国产观看| 国产一二三精品| 奇米色一区二区| 亚洲女与黑人做爰| 日本一二三四高清不卡| 日韩免费看网站| 欧美日韩国产高清一区二区| 91污片在线观看| 成人黄色综合网站| 九九九精品视频| 日韩黄色小视频| 亚洲一区二区精品久久av| 国产精品丝袜黑色高跟| 精品国产乱码久久久久久免费| 91久久精品网| 91精品91久久久中77777| 福利视频网站一区二区三区| 久久福利视频一区二区| 日韩福利电影在线观看| 亚洲精品日日夜夜| 中文字幕一区二区不卡| 国产精品你懂的在线欣赏| 久久午夜色播影院免费高清| 欧美mv日韩mv亚洲| 日韩一区二区三区四区五区六区| 欧美在线999| 99r精品视频| 精品一区二区三区视频| 国产精品久久久久久久久久免费看| 国产尤物一区二区| 美国毛片一区二区三区| 青青草原综合久久大伊人精品优势 | 欧美性生交片4| 97se亚洲国产综合自在线观| 不卡视频在线看| www.欧美.com| 色综合av在线| 一本一道久久a久久精品| 色成年激情久久综合| 欧美日韩亚洲国产综合| 欧美精品久久久久久久多人混战| 欧美日韩亚洲国产综合| 色哟哟一区二区在线观看| 在线中文字幕一区| 欧美精品在线一区二区三区| 91精品久久久久久久99蜜桃| 精品少妇一区二区三区在线视频| 精品国产一区二区国模嫣然| 国产亚洲欧美日韩俺去了| 国产精品视频九色porn| 一区av在线播放| 免费视频最近日韩| 国产成人午夜精品5599 | 日韩不卡一区二区三区| 蜜臀99久久精品久久久久久软件| 狠狠色狠狠色合久久伊人| 成人午夜电影小说| 91国产免费看| 91精品在线免费| 国产日韩精品视频一区| 亚洲一区免费在线观看| 久久国产夜色精品鲁鲁99| 国产成人无遮挡在线视频| 在线免费av一区| 欧美成人欧美edvon| 国产精品成人免费精品自在线观看 | 精品一区二区在线看| gogo大胆日本视频一区| 欧美日韩国产综合一区二区三区| 26uuu欧美日本| 亚洲免费伊人电影| 国产综合色产在线精品 | 国产成人8x视频一区二区| 91久久久免费一区二区| 精品福利一二区| 亚洲精品国产一区二区精华液| 免费看日韩a级影片| 成人国产亚洲欧美成人综合网| 欧美乱妇23p| 国产精品天美传媒| 日本亚洲最大的色成网站www| 成人午夜大片免费观看| 欧美一激情一区二区三区| 一区二区三区小说| 粉嫩欧美一区二区三区高清影视 | 精品国产一区二区三区久久久蜜月| 国产精品乱码一区二区三区软件| 午夜a成v人精品| 94色蜜桃网一区二区三区| 精品捆绑美女sm三区| 亚洲一区二区三区视频在线| 成人小视频免费在线观看| 精品成人一区二区三区| 洋洋成人永久网站入口| 国产a久久麻豆| 精品av综合导航| 日本欧美一区二区三区| 欧美日韩精品一区二区| 一区二区三区欧美| aaa欧美日韩| 国产欧美精品在线观看| 精品亚洲aⅴ乱码一区二区三区| 欧美视频一区二区三区| 一区二区三区日韩在线观看| 成人ar影院免费观看视频| 国产午夜三级一区二区三| 卡一卡二国产精品| 日韩一区二区三区免费观看| 亚洲成av人影院在线观看网| 91视频.com| 亚洲综合一区在线| 91性感美女视频| 亚洲欧美韩国综合色| 色又黄又爽网站www久久| 玉足女爽爽91| 欧美视频日韩视频在线观看| 一区二区三区成人|