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

📄 listboxex.cpp

📁 用于检测自行开发的tcp/ip协议栈的小程序
💻 CPP
字号:
// ListBoxEx.cpp : implementation file
//

#include "stdafx.h"
#include "ListBoxEx.h"

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

/////////////////////////////////////////////////////////////////////////////
// CListBoxEx

CListBoxEx::CListBoxEx()
{
}

CListBoxEx::~CListBoxEx()
{
}


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

/////////////////////////////////////////////////////////////////////////////
// CListBoxEx message handlers

long CListBoxEx::GetExtentForString(LPCTSTR lpszItem)
{
    CDC* cdc = this->GetDC();
	CFont* font = this->GetFont();
    CFont* pOldFont;
	if (font)
	{
		pOldFont = cdc->SelectObject(font);
		TEXTMETRIC tm;
		cdc->GetTextMetrics(&tm);
		CSize size = cdc->GetTextExtent(lpszItem, lstrlen(lpszItem) );
		size.cx += tm.tmAveCharWidth;
		cdc->SelectObject(pOldFont);
		this->ReleaseDC(cdc);
		return (LONG) size.cx;     
	}
    this->ReleaseDC(cdc);
	return 0L;
}

long CListBoxEx::GetExtentForEntireControl()
{
	CDC* cdc = this->GetDC();
	CFont* font = this->GetFont();
	CFont* pOldFont;
	if (font)
	{
		pOldFont = cdc->SelectObject(font);
		TEXTMETRIC tm;
		cdc->GetTextMetrics(&tm);
		CString sText;
		LONG max_cx = 0;
/****----------------C H A N G E---REY--8/29/98----------****
 **** 		for(int n = 0; n<=GetCount(); n++)
 ****----------------------------------------------------****/
		for(int n = 0; n<GetCount(); n++)
/****--------------------END CHANGE----------------------****/
		{
			this->GetText(n, sText);
			if (sText == "")
				continue;
			CSize size = cdc->GetTextExtent(sText, sText.GetLength());
			size.cx += tm.tmAveCharWidth;  
			if(max_cx <= size.cx)
				max_cx = size.cx;          
		}
		cdc->SelectObject(pOldFont);
		this->ReleaseDC(cdc);
		return max_cx;     
	}     
	this->ReleaseDC(cdc);     
	return 0L;
}

int CListBoxEx::AddString(LPCTSTR sString)
{
	long lStringExtent = GetExtentForString(sString);
	if(GetHorizontalExtent() < lStringExtent)
		SetHorizontalExtent(lStringExtent);

	return CListBox::AddString(sString);
}

int CListBoxEx::DeleteString(UINT nIndex)
{
	int nCountLeft = CListBox::DeleteString(nIndex);
	if(nCountLeft == LB_ERR)
		return LB_ERR;
	long lMaxExtent = GetExtentForEntireControl();
	SetHorizontalExtent(lMaxExtent);     
	
	return nCountLeft;
}

int CListBoxEx::InsertString(int nIndex, LPCTSTR lpszItem)
{
	int nInsertPos = CListBox::InsertString(nIndex, lpszItem);
	if(nInsertPos == LB_ERR) 
		return LB_ERR;

	long lStringExtent = GetExtentForString(lpszItem);
	if(GetHorizontalExtent() < lStringExtent)
		SetHorizontalExtent(lStringExtent);     

	return nInsertPos;
}

void CListBoxEx::ResetContent()
{
	SetHorizontalExtent(0); 
    CListBox::ResetContent();
	return;
}

int CListBoxEx::Dir(UINT attr, LPCTSTR lpszWildCard)
{
	int nReturn = CListBox::Dir( attr, lpszWildCard );
	if(nReturn == LB_ERR || nReturn == LB_ERRSPACE)
		return nReturn;
	LONG lMaxExtent = GetExtentForEntireControl();
	SetHorizontalExtent(lMaxExtent);     
	return nReturn;
}

⌨️ 快捷键说明

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