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

📄 editedlistctrl.cpp

📁 本人为出租屋编写的电费管理程序,应用了MFC DAO链接了ACCESS数据库,利用可编辑的listctrl控件,综合考虑了多房间线损耗电的业务细节 和 界面皮肤美观,灵活方便的将物业电费管理轻松掌控.
💻 CPP
字号:
// EditedListCtrl.cpp : implementation file
//

#include "stdafx.h"
#include "tempListCanEdited.h"
#include "EditedListCtrl.h"

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

/////////////////////////////////////////////////////////////////////////////
// CEditedListCtrl
int CEditedListCtrl::t=0;

CEditedListCtrl::CEditedListCtrl()
{
	
}

CEditedListCtrl::~CEditedListCtrl()
{
}


BEGIN_MESSAGE_MAP(CEditedListCtrl, CListCtrl)
	//{{AFX_MSG_MAP(CEditedListCtrl)
	ON_WM_LBUTTONDBLCLK()
	//}}AFX_MSG_MAP
	ON_MESSAGE(WM_USER_EDIT_END,OnEditEnd)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CEditedListCtrl message handlers

void CEditedListCtrl::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	
	CRect rcCtrl;
	LVHITTESTINFO lvhti;
    lvhti.pt = point;
	int nItem = CListCtrl::SubItemHitTest(&lvhti);
	if(nItem == -1)
	   return;
	int nSubItem = lvhti.iSubItem;
	CListCtrl::GetSubItemRect(nItem,nSubItem,LVIR_LABEL,rcCtrl); 
    ShowEdit(TRUE,nItem,nSubItem,rcCtrl);
	
	CListCtrl::OnLButtonDblClk(nFlags, point);
	
}

void CEditedListCtrl::ShowEdit(BOOL bShow,int nItem,int nIndex,CRect rcCtrl)
{
	 if(m_edit.m_hWnd == NULL)
	{
		m_edit.Create(ES_AUTOHSCROLL|WS_CHILD|ES_LEFT|ES_WANTRETURN|WS_BORDER,CRect(0,0,0,0),this,IDC_EDIT);
		m_edit.ShowWindow(SW_HIDE);

		CFont tFont;
		tFont.CreateStockObject(DEFAULT_GUI_FONT);
		m_edit.SetFont( & tFont);
		tFont.DeleteObject();
	}
	if(bShow == TRUE)
	{
		CString strItem = CListCtrl::GetItemText(nItem,nIndex);
		m_edit.MoveWindow(rcCtrl);
		m_edit.ShowWindow(SW_SHOW);
		m_edit.SetWindowText(strItem);
		::SetFocus(m_edit.GetSafeHwnd());
		m_edit.SetSel(-1);  
		m_edit.SetCtrlData(MAKEWPARAM(nIndex,nItem));	
	}
	else
		m_edit.ShowWindow(SW_HIDE);
}


void CEditedListCtrl::OnEditEnd(WPARAM wParam,LPARAM lParam)
{	//HINSTANCE hIns=(HINSTANCE)GetModuleHandle(NULL); 
    CTempListCanEditedDlg * dlg = (CTempListCanEditedDlg *)GetParent();
	if(wParam == TRUE)
	{
		CString strText(_T(""));
		m_edit.GetWindowText(strText);
		DWORD dwData = m_edit.GetCtrlData();
		int nItem= dwData>>16;
		int nIndex = dwData&0x0000ffff;
		CListCtrl::SetItemText(nItem,nIndex,strText);
		
		if (nIndex = 1)
		{	CString a ;
		    a = GetItemText(nItem,1);
			CString b;
			b = GetItemText(nItem,2);
			CString c;
			c.Format("%d",atoi(a)-atoi(b));
			SetItemText(nItem,3,c);
		
			CString d;
			d.Format("%.2f",atof(c)*0.65) ;
			SetItemText(nItem,4,d);
			
			CString e;
			
			e.Format("%d",atoi(a)-atoi(b)+t);
			t=atoi(a)-atoi(b);
			dlg->SetDlgItemText(IDC_FENBIAOHE,e);
	
			
			CString f;
			dlg->UpdateData(TRUE);
			f.Format("%d",dlg->m_tmdushu - dlg->m_totalFenbiao);
			dlg->SetDlgItemText(IDC_ZONGTANXIAO,f);
		
		}
		if (nIndex = 7)
		{
			CString a;
			a = GetItemText(nItem,7);
			CString b;
			b = GetItemText(nItem,4);
			CString c;
			c.Format("%.2f",atof(a)+atof(b));
			SetItemText(nItem,8,c);
		
 			
			CString e;
  			
			dlg->UpdateData(TRUE);
  		
			dlg->m_daitanxiao = dlg->m_zongtanxiao - atoi(a);
		//	e.Format("%d",(int)dlg->m_zongtanxiao*0.65-atoi(a));
 			dlg->UpdateData(false);
  		//	dlg->SetDlgItemText(IDC_DAITANXIAO,e);
 	
			
		    dlg->Invalidate();          //居然刷新不出来
		}
	
	
	}


    if(lParam == FALSE)
	    m_edit.ShowWindow(SW_HIDE);
}

⌨️ 快捷键说明

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