itemedit.cpp

来自「用Visual c++.net开发的图书管理系统」· C++ 代码 · 共 95 行

CPP
95
字号
#include "stdafx.h"
#include "ItemEdit.h"
#include ".\itemedit.h"
#include "EditList.h"


// CItemEdit

IMPLEMENT_DYNAMIC(CItemEdit, CEdit)
CItemEdit::CItemEdit()
{
	m_pList = NULL;
	m_nItem = -1;
	m_nSubItem = -1;
}

CItemEdit::CItemEdit(CListCtrl *pList, int nItem, int nSubItem)
{
	m_pList = pList;
	m_nItem = nItem;
	m_nSubItem = nSubItem;
	Create();
}

void CItemEdit::SetListCtrl(CListCtrl *pList, int nItem, int nSubItem)
{
	m_pList = pList;
	m_nItem = nItem;
	m_nSubItem = nSubItem;
}

CItemEdit::~CItemEdit()
{
}


BEGIN_MESSAGE_MAP(CItemEdit, CEdit)
	ON_WM_KILLFOCUS()
END_MESSAGE_MAP()


void CItemEdit::OnKillFocus(CWnd* pNewWnd)
{
	CEdit::OnKillFocus(pNewWnd);

	if ( m_pList != NULL )
	{
		CString strText;
		GetWindowText( strText );
		if ( m_pList->GetItemText( m_nItem, m_nSubItem ) != strText )
		{
			static_cast<CEditList *>( m_pList )->SetEditedFlag( m_nItem, m_nSubItem, TRUE );
			m_pList->SetItemText( m_nItem, m_nSubItem, strText );
		}
		m_pList->Invalidate();
	}
	delete this;
}

BOOL CItemEdit::Create()
{
	CRect rect;
	int nHeight = 12;// default value
	if ( m_pList != NULL )
	{
		m_pList->GetSubItemRect( m_nItem, m_nSubItem, LVIR_BOUNDS, rect );
		nHeight = rect.Height() - 2;
		// if the m_nSubItem == 0, the rect will be the whole row's rect. Code below would avoid this case
		rect.right = rect.left + m_pList->GetColumnWidth( m_nSubItem );
		rect.bottom--;// keep bottom line of list visible;
		rect.left++;// keep left line of list visible;
	}
	BOOL bRet = CEdit::Create( WS_CHILD | WS_VISIBLE | ES_AUTOHSCROLL | ES_WANTRETURN, rect, m_pList, 0x1234 );
	TRACE1( _T("Height: %d\r\n"), nHeight );
	m_font.CreateFont(
		nHeight,                   // nHeight
		0,                         // nWidth
		0,                         // nEscapement
		0,                         // nOrientation
		FW_NORMAL,                 // nWeight
		FALSE,                     // bItalic
		FALSE,                     // bUnderline
		0,                         // cStrikeOut
		ANSI_CHARSET,              // nCharSet
		OUT_DEFAULT_PRECIS,        // nOutPrecision
		CLIP_DEFAULT_PRECIS,       // nClipPrecision
		DEFAULT_QUALITY,           // nQuality
		DEFAULT_PITCH | FF_SWISS,  // nPitchAndFamily
		"Arial");
	SetFont( &m_font );
	SetWindowText( m_pList->GetItemText( m_nItem, m_nSubItem ) );
	SetFocus();
	return bRet;
}

⌨️ 快捷键说明

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