⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 list2.cpp

📁 一个很好的VC源代码
💻 CPP
字号:
// List2.cpp : implementation file
//

#include "stdafx.h"
#include "List2.h"

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

/////////////////////////////////////////////////////////////////////////////
// CList2

CList2::CList2()
{
}

CList2::~CList2()
{
}


BEGIN_MESSAGE_MAP(CList2, CListCtrl)
	//{{AFX_MSG_MAP(CList2)
	ON_WM_LBUTTONDBLCLK()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CList2 message handlers

void CList2::SetField(int nColumns,FIELD *pField,CDaoRecordset *pSet)
{
	m_nColumns=nColumns;
	for (int i=0;i<nColumns;i++)
		m_fdValue[i]=pField[i];
	m_pSet=pSet;
}

void CList2::SetField(int nColumns,FIELD2 *pField,CDaoRecordset *pSet)
{
	CRect rc;
	GetClientRect(rc);
	m_nAvr=rc.Width()/nColumns;
	m_nColumns=nColumns;
	for (int i=0;i<nColumns;i++)
	{
		m_fdValue[i].lpCaption=pField[i].lpCaption;
		m_fdValue[i].lpName=pField[i].lpName;
		m_fdValue[i].nWidth=m_nAvr;
	}
	m_pSet=pSet;
}

void CList2::SetWidth(int *nWidth,int nFrom,int nTo)
{
	for (int i=nFrom;i<=nTo;i++)
		SetColumnWidth(i,nWidth[i-nFrom]*m_nAvr);
}

void CList2::SetWidth(double *nWidth)
{
	for (int i=0;i<m_nColumns;i++)
		SetColumnWidth(i,int(nWidth[i]*m_nAvr));
}

void CList2::SetHeader()
{
	for (int i=0;i<m_nColumns;i++)
		InsertColumn(i,m_fdValue[i].lpCaption,LVCFMT_CENTER,m_fdValue[i].nWidth);
	DWORD dwStyle=GetStyle();
	dwStyle|=LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT;
	SetExtendedStyle(dwStyle);
}

CString CList2::VariantToString(COleVariant vValue)
{
	CString strResult;
	COleDateTime tmTemp;
	switch (vValue.vt)
	{
	case VT_BSTR:
		strResult=(LPCTSTR)vValue.bstrVal;
		break;
	case VT_BOOL:
		strResult=vValue.iVal?"是":"否";
		break;
	case VT_I2:
		strResult.Format("%d",vValue.iVal);
		break;
	case VT_I4:
		strResult.Format("%d",vValue.lVal);
		break;
	case VT_DATE:
		tmTemp=vValue;
		strResult=tmTemp.Format(VAR_DATEVALUEONLY);
		if (strResult.GetLength()==0)
			strResult=tmTemp.Format(VAR_TIMEVALUEONLY);
		break;
	default:
		strResult="";
	}
	return strResult;
}

void CList2::Refresh()
{
	DeleteAllItems();
	m_pSet->Requery();
	COleVariant vValue;
	int nItem=0;
	while (!m_pSet->IsEOF())
	{
		for (int i=0;i<m_nColumns;i++)
		{
			m_pSet->GetFieldValue(m_fdValue[i].lpName,vValue);
			if (i==0)
				InsertItem(nItem,VariantToString(vValue));
			else
				SetItemText(nItem,i,VariantToString(vValue));
		}
		nItem++;
		m_pSet->MoveNext();
	}
}

void CList2::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
	LVHITTESTINFO *pHitTestInfo=new LVHITTESTINFO;
	pHitTestInfo->pt=point;
	HitTest(pHitTestInfo);
	if (pHitTestInfo->flags==LVHT_ONITEM||pHitTestInfo->flags==LVHT_ONITEMLABEL)
	{
		m_strID=GetItemText(pHitTestInfo->iItem,0);
		GetParent()->SendMessage(WM_LIST2DBLCLICK,atoi(m_strID));
		//MessageBox(m_strID);
	}
	CListCtrl::OnLButtonDblClk(nFlags, point);
}

void CList2::Init()
{
	SetHeader();
	Refresh();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -