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

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

?? listviewex.cpp

?? 強大易用的郵件收發客戶端
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// Copyright (C) 1997-2002 Valeriy Ovechkin
// 
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
// 
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
//
// ListVwEx.cpp : implementation of the CListViewEx class
//
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992-1996 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.

#include "stdafx.h"
#include "ListViewEx.h"

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

/////////////////////////////////////////////////////////////////////////////
// CListViewEx

IMPLEMENT_DYNCREATE(CListViewEx, CListView)

BEGIN_MESSAGE_MAP(CListViewEx, CListView)
	//{{AFX_MSG_MAP(CListViewEx)
	ON_WM_SIZE()
	ON_WM_PAINT()
	ON_WM_SETFOCUS()
	ON_WM_KILLFOCUS()
	ON_WM_RBUTTONDOWN()
	ON_WM_RBUTTONUP()
	ON_WM_ERASEBKGND()
	//}}AFX_MSG_MAP
	ON_MESSAGE(LVM_SETIMAGELIST, OnSetImageList)
	ON_MESSAGE(LVM_SETTEXTCOLOR, OnSetTextColor)
	ON_MESSAGE(LVM_SETTEXTBKCOLOR, OnSetTextBkColor)
	ON_MESSAGE(LVM_SETBKCOLOR, OnSetBkColor)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CListViewEx construction/destruction

CListViewEx::CListViewEx()
{
	m_bFullRowSel=FALSE;
	m_bClientWidthSel=TRUE;

	m_cxClient=0;
	m_cxStateImageOffset=0;

	m_clrText=::GetSysColor(COLOR_WINDOWTEXT);
	m_clrTextBk=::GetSysColor(COLOR_WINDOW);
	m_clrBkgnd=::GetSysColor(COLOR_WINDOW);
	
	m_dwLastRButtonDown = 0;
}

CListViewEx::~CListViewEx()
{
}

BOOL CListViewEx::PreCreateWindow(CREATESTRUCT& cs)
{
	// default is report view and full row selection
	cs.style&=~LVS_TYPEMASK;
	cs.style|=LVS_REPORT | LVS_OWNERDRAWFIXED;
	m_bFullRowSel=TRUE;

	return(CListView::PreCreateWindow(cs));
}

BOOL CListViewEx::SetFullRowSel(BOOL bFullRowSel)
{
	// no painting during change
	LockWindowUpdate();

	m_bFullRowSel=bFullRowSel;

	BOOL bRet;

	if(m_bFullRowSel)
		bRet=ModifyStyle(0L,LVS_OWNERDRAWFIXED);
	else
		bRet=ModifyStyle(LVS_OWNERDRAWFIXED,0L);

	// repaint window if we are not changing view type
	if(bRet && (GetStyle() & LVS_TYPEMASK)==LVS_REPORT)
		Invalidate();

	// repaint changes
	UnlockWindowUpdate();

	return(bRet);
}

BOOL CListViewEx::GetFullRowSel()
{
	return(m_bFullRowSel);
}

/////////////////////////////////////////////////////////////////////////////
// CListViewEx drawing
void CListViewEx::GetItemColors(int nItem, COLORREF& clrText, 
								COLORREF& clrBk, BOOL bSelected)
{
	BOOL bFocus=(GetFocus()==this);
	if (bSelected)
	{
		clrText = ::GetSysColor(COLOR_HIGHLIGHTTEXT);
		clrBk = bFocus ? ::GetSysColor(COLOR_HIGHLIGHT) : ::GetSysColor(COLOR_3DFACE);
	}
}

// offsets for first and other columns
#define OFFSET_FIRST	2
#define OFFSET_OTHER	3

void CListViewEx::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
	CListCtrl& ListCtrl=GetListCtrl();
	int nColumns=ListCtrl.GetHeaderCtrl()->GetItemCount();
	int nColumn=0;
	int nOffset=OFFSET_FIRST;
	CDC* pDC=CDC::FromHandle(lpDrawItemStruct->hDC);
	CRect rcColumn;
	CRect rcItem(lpDrawItemStruct->rcItem);
	UINT uiFlags=ILD_TRANSPARENT;
	UINT nJustify=DT_LEFT;
	CImageList* pImageList;
	int nItem=lpDrawItemStruct->itemID;
	BOOL bFocus=(GetFocus()==this);
	COLORREF clrTextSave(0), clrBkSave(0);
	COLORREF clrImage=m_clrBkgnd;
	static _TCHAR szBuff[MAX_PATH];

	// get item data
	LV_ITEM lvi;
	lvi.mask= LVIF_IMAGE | LVIF_STATE;
	lvi.iItem=nItem;
	lvi.iSubItem=0;
	lvi.pszText=0;
	lvi.cchTextMax=0;
	lvi.stateMask=0xFFFF;		// get all state flags
	ListCtrl.GetItem(&lvi);

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

	LVCOLUMN lvc;
	lvc.mask=LVCF_FMT | LVCF_WIDTH | LVCF_ORDER;
	CRect rcAllLabels;
	ListCtrl.GetItemRect(nItem,rcAllLabels,LVIR_BOUNDS);

	// set colors if item is selected
	COLORREF clrText = GetSysColor(COLOR_WINDOWTEXT);
	COLORREF clrBk = GetSysColor(COLOR_WINDOW);
	GetItemColors(nItem, clrText, clrBk, bSelected);


	CBrush brush(clrBk);
	pDC->FillRect(rcAllLabels, &brush);

	clrTextSave = pDC->SetTextColor(clrText);
	clrBkSave   = pDC->SetBkColor(clrBk);

	// set color and mask for the icon
	if(lvi.state & LVIS_CUT)
	{
		clrImage = m_clrBkgnd;
		uiFlags |= ILD_SELECTED;
	}
	else if(bSelected)
	{
		clrImage = ::GetSysColor(COLOR_HIGHLIGHT);
		uiFlags |= ILD_SELECTED;
	}

	int nLastColRight = 0;
	for(int nIndex=0; nIndex<nColumns; nIndex++)
	{
		nColumn = ListCtrl.GetHeaderCtrl()->OrderToIndex(nIndex);
		ListCtrl.GetColumn(nColumn,&lvc);
		ListCtrl.GetHeaderCtrl()->GetItemRect(nColumn, &rcColumn);
		rcItem.left=rcColumn.left+nOffset;
		rcItem.right=rcColumn.right-nOffset;

		if (nIndex > 0)
		{
			switch(lvc.fmt & LVCFMT_JUSTIFYMASK)
			{
			case LVCFMT_RIGHT:
				nJustify=DT_RIGHT;
				break;
			case LVCFMT_CENTER:
				nJustify=DT_CENTER;
				break;
			default:
				nJustify=DT_LEFT;
				break;
			}
		}

		if (nColumn == 0)
		{
			// draw state icon
			UINT nStateImageMask=lvi.state & LVIS_STATEIMAGEMASK;
			if(nStateImageMask)
			{
				int nImage=(nStateImageMask>>12)-1;
				pImageList=ListCtrl.GetImageList(LVSIL_STATE);
				if(pImageList)
					pImageList->Draw(pDC,nImage,CPoint(rcItem.left,rcItem.top),ILD_TRANSPARENT);
			}

			// draw normal and overlay icon
			CRect rcIcon;
			ListCtrl.GetItemRect(nItem,rcIcon,LVIR_ICON);

			pImageList=ListCtrl.GetImageList(LVSIL_SMALL);
			if(pImageList)
			{
				UINT nOvlImageMask=lvi.state & LVIS_OVERLAYMASK;
				if(rcItem.left<rcItem.right-1)
					ImageList_DrawEx(pImageList->m_hImageList,lvi.iImage,pDC->m_hDC,rcIcon.left,rcIcon.top,16,16,m_clrBkgnd,clrImage,uiFlags | nOvlImageMask);
			}

			// draw item label
			ListCtrl.GetItemRect(nItem,rcItem,LVIR_LABEL);
			rcItem.right-=m_cxStateImageOffset;
			rcItem.left += 2;
			nLastColRight = rcItem.right;
		}
		else
		{
			rcItem.right = nLastColRight + rcItem.Width() + 2*nOffset;
			rcItem.left = nLastColRight + nOffset*2;
			nLastColRight = rcItem.right;
		}
		
		DrawSubItem(pDC, nItem, nColumn, rcItem, nJustify, bSelected);
		nOffset = OFFSET_OTHER;
	}

	// draw focus rectangle if item has focus
	if(lvi.state & LVIS_FOCUSED && bFocus)
	{
		pDC->DrawFocusRect(rcAllLabels);
	}

	// set original colors if item was selected
	//if(bSelected)
	{
		pDC->SetTextColor(clrTextSave);
		pDC->SetBkColor(clrBkSave);
	}
}
int CListViewEx::GetItemText(int nItem, int nColumn, LPTSTR pBuf, int nLen)
{
	if (m_bUseMapping)
	{
		nColumn = GetVisibleColIndex(nColumn);
		if (nColumn<0)
			return 0;
	}
	if (nColumn>0)
	{
		return GetListCtrl().GetItemText(nItem,nColumn,pBuf, nLen);
	}
	// main item text
	LV_ITEM lvi;
	lvi.mask=LVIF_TEXT;
	lvi.iItem=nItem;
	lvi.iSubItem=0;
	lvi.pszText=pBuf;
	lvi.cchTextMax=nLen;
	lvi.stateMask=0;		// get all state flags
	GetListCtrl().GetItem(&lvi);
	return strlen(pBuf);
}

void CListViewEx::DrawSubItem(CDC* pDC, int nItem, int nColumn, CRect& rcLabel, int nJustify, BOOL )
{
	static _TCHAR szBuff[MAX_PATH];
	
	if (GetItemText(nItem, nColumn, szBuff,sizeof(szBuff)) > 0)
	{
		pDC->DrawText(szBuff,-1,rcLabel, nJustify | DT_SINGLELINE | DT_NOPREFIX | DT_VCENTER | DT_END_ELLIPSIS );
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情久久五月天| 日韩精品一级中文字幕精品视频免费观看| 欧美一区二区视频在线观看2022 | 夜夜夜精品看看| 18欧美亚洲精品| 亚洲欧美日韩一区| 一区二区三区在线观看动漫| 亚洲精品视频在线| 天天综合天天做天天综合| 亚洲高清免费视频| 日本不卡视频一二三区| 美女脱光内衣内裤视频久久网站| 久久精品国产一区二区| 国产91在线观看| 色综合久久久久网| 538在线一区二区精品国产| 欧美一级生活片| 337p日本欧洲亚洲大胆色噜噜| 久久久久久久久岛国免费| 中文字幕欧美国产| 亚洲成人自拍一区| 国产麻豆精品theporn| 成人免费视频一区| 欧美日韩国产三级| www激情久久| 亚洲一区二区三区四区五区中文| 日韩高清电影一区| 丁香另类激情小说| 欧美日韩一区二区在线观看视频| 日韩三级在线观看| 中文字幕一区二区三区乱码在线 | 日本福利一区二区| 精品少妇一区二区三区免费观看| 国产日韩欧美亚洲| 亚洲va欧美va人人爽午夜| 国产乱对白刺激视频不卡| 色婷婷精品久久二区二区蜜臂av | 国产乱码精品一区二区三区忘忧草| 国产ts人妖一区二区| 欧美日韩三级视频| 国产精品欧美一级免费| 美女国产一区二区| 成人aa视频在线观看| 日韩免费高清视频| 亚洲综合区在线| 不卡一区二区中文字幕| 日韩精品一区二区三区视频| 一区二区三区 在线观看视频| 激情综合色综合久久| 欧美日韩亚洲综合一区二区三区| 国产精品久久午夜夜伦鲁鲁| 狠狠色狠狠色综合日日91app| 精品视频123区在线观看| 久久网站热最新地址| 日韩精品成人一区二区三区| 色天使色偷偷av一区二区| 久久综合九色综合97_久久久| 亚洲国产一区二区视频| 99久久免费视频.com| 久久这里只有精品首页| 秋霞影院一区二区| 欧美一区二区视频观看视频| 亚洲成人黄色影院| 91黄视频在线观看| 亚洲三级视频在线观看| aaa亚洲精品| 国产精品视频在线看| 国产乱色国产精品免费视频| 精品久久久网站| 狠狠色丁香九九婷婷综合五月| 日韩美女一区二区三区四区| 日韩电影网1区2区| 欧美一级片免费看| 午夜精品久久久久久久| 欧美一卡2卡三卡4卡5免费| 丝袜美腿成人在线| 日韩一区二区三区高清免费看看| 丝袜美腿亚洲综合| 日韩精品在线一区| 丁香桃色午夜亚洲一区二区三区| 日本一区二区免费在线 | 欧美丰满嫩嫩电影| 琪琪久久久久日韩精品| 精品日韩一区二区三区免费视频| 久久国产成人午夜av影院| 精品国产一区二区三区久久影院 | 国产婷婷一区二区| 成人久久视频在线观看| 亚洲色图都市小说| 欧美日韩一区视频| 狠狠色丁香九九婷婷综合五月| 国产拍欧美日韩视频二区 | 亚洲男女一区二区三区| 欧美亚洲一区二区三区四区| 奇米色777欧美一区二区| 久久精品免视看| 欧美在线视频全部完| 日韩精品一级中文字幕精品视频免费观看| 欧美电影免费观看高清完整版在| 国产不卡视频在线观看| 亚洲va中文字幕| 日本一区二区免费在线| 欧美视频中文一区二区三区在线观看| 日日嗨av一区二区三区四区| 国产日韩成人精品| 3751色影院一区二区三区| 国产高清精品在线| 亚洲一区二区三区四区在线观看 | 老司机精品视频线观看86| 国产欧美一区二区精品性| 在线亚洲欧美专区二区| 精品一区二区三区香蕉蜜桃| 亚洲日韩欧美一区二区在线| 91麻豆精品国产| av一区二区不卡| 久久99精品久久久久| 亚洲午夜电影网| 国产精品区一区二区三区| 欧美一区二区三级| 色偷偷久久人人79超碰人人澡| 精品亚洲成a人在线观看| 亚洲精品国久久99热| 国产日韩高清在线| 精品久久久久香蕉网| 欧美日韩在线播放三区四区| av电影一区二区| 国产精品1区2区| 美女mm1313爽爽久久久蜜臀| 婷婷六月综合亚洲| 亚洲国产精品久久久久秋霞影院| 国产精品欧美一级免费| 久久久亚洲欧洲日产国码αv| 欧美日韩一二三区| 欧美午夜精品理论片a级按摩| 波多野结衣91| 国产福利一区在线观看| 激情综合网激情| 精品一二线国产| 日本网站在线观看一区二区三区| 亚洲一区二区三区爽爽爽爽爽| 中文无字幕一区二区三区| 久久综合久久综合久久| 欧美大片一区二区三区| 91麻豆精品国产自产在线 | 欧洲一区在线电影| a4yy欧美一区二区三区| 99麻豆久久久国产精品免费| 丁香婷婷综合网| 成人免费va视频| 成人少妇影院yyyy| 99久久国产综合精品麻豆| 成人高清视频免费观看| 99精品视频在线观看| 色综合久久久久网| 欧美天堂亚洲电影院在线播放| 欧美性一区二区| 欧美日韩免费在线视频| 91精品国产综合久久蜜臀| 日韩三级视频在线观看| 精品国产三级a在线观看| 久久精品亚洲精品国产欧美kt∨| 久久久精品人体av艺术| 国产精品女上位| 一区二区三区 在线观看视频| 亚洲亚洲精品在线观看| 日韩不卡免费视频| 精品一区二区三区不卡| 不卡一二三区首页| 欧美性大战久久久久久久| 欧美精品丝袜中出| 国产婷婷色一区二区三区四区| 中文字幕精品一区二区精品绿巨人 | 国产一区二区三区在线观看免费视频| 美国精品在线观看| 国产高清久久久久| 在线观看视频91| 欧美一级专区免费大片| 国产精品久久综合| 日韩精品免费专区| 国产丶欧美丶日本不卡视频| 91美女片黄在线观看91美女| 欧美日韩国产综合一区二区| 久久综合九色综合97_久久久| 亚洲乱码国产乱码精品精可以看 | 欧美精品一区二区三区蜜臀| 久久蜜桃一区二区| 亚洲综合精品自拍| 国产一区二区三区久久悠悠色av| eeuss鲁片一区二区三区在线看| 欧洲另类一二三四区| 精品国产三级a在线观看| 亚洲手机成人高清视频| 日本一道高清亚洲日美韩| av中文字幕不卡| 欧美一区二区免费观在线| 亚洲欧洲av一区二区三区久久| 日韩成人午夜精品| 色哟哟日韩精品| 中文字幕电影一区| 久久99蜜桃精品|