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

📄 listctrlarea.cpp

📁 一个简单的个人所得税计算器,可以编辑税率表和所在地列表.
💻 CPP
字号:
// ListCtrlArea.cpp : implementation file
//

#include "stdafx.h"
#include "pitc.h"
#include "ListCtrlArea.h"
#include "MainFrm.h"
#include "AreaDlg.h"
#include "BCMenu.h"

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

extern CString areaFlag;
/////////////////////////////////////////////////////////////////////////////
// CListCtrlArea

CListCtrlArea::CListCtrlArea()
{
}

CListCtrlArea::~CListCtrlArea()
{
}


BEGIN_MESSAGE_MAP(CListCtrlArea, CMyListCtrl)
	//{{AFX_MSG_MAP(CListCtrlArea)
	ON_WM_RBUTTONDOWN()
	ON_WM_CREATE()
	ON_WM_LBUTTONDOWN()
	//}}AFX_MSG_MAP
	ON_NOTIFY_REFLECT(LVN_ITEMCHANGED, OnItemchanged)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CListCtrlArea message handlers
void CListCtrlArea::OnItemchanged(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	//AfxMessageBox("OnItemchanged!");
	CMainFrame *pMainFrm;
    pMainFrm=(CMainFrame *)(AfxGetApp()->m_pMainWnd);
	int count=GetSelectedCount();
	if(0==count)
	{
		pMainFrm->m_bAreaEdit=FALSE;
	    pMainFrm->m_bAreaDelete=FALSE;
	}
	else
	{
        pMainFrm->m_bAreaEdit=TRUE;
	    pMainFrm->m_bAreaDelete=TRUE;
        ////
        POSITION pos = GetFirstSelectedItemPosition();
	    int m=GetNextSelectedItem(pos);
        AREA_T area_t;
	    CString str;
	    str=GetItemText(m,0);
	    area_t.area=str;
        str=GetItemText(m,1);
	    area_t.start=atof(str);
        //::SendMessage(pMainFrm->m_pComputView->GetSafeHwnd(),WM_UPDATE_AREA,0,(LPARAM)(&area_t));
	    pMainFrm->m_pComputView->UpdateDisplay();
	    ////
	}

	///////////
	*pResult = 0;
}


BOOL CListCtrlArea::ExamArea()
{
	
    int count=GetItemCount();
	/*
	if(count==0)
	{
		AfxMessageBox("所在地列表不能为空!");
		return FALSE;
	}
	*/

	for(int m=0;m<count;m++)
	{
		if(atof(GetItemText(m,1))<0)
		{
			CString str;
			str.Format("第%d行的起征点的值应>=0!",m+1);
			AfxMessageBox(str);
			return FALSE;
		}
		
	}
	return TRUE;


}

void CListCtrlArea::OnRButtonDown(UINT nFlags, CPoint point) 
{
	CMyListCtrl::OnRButtonDown(nFlags, point);
	// TODO: Add your message handler code here and/or call default
	CMainFrame *pMain;
	pMain=(CMainFrame*)(AfxGetApp()->m_pMainWnd);
	
	//BCMenu menu;
	CMenu menu;
	if(menu.CreatePopupMenu())
		{
			menu.AppendMenu(MF_STRING, ID_AREA_ADD, "添加所在地");
			if(pMain->m_bAreaEdit)
			    menu.AppendMenu(MF_ENABLED|MF_STRING, ID_AREA_EDIT, "修改所在地");
			else
				menu.AppendMenu(MF_DISABLED|MF_GRAYED, ID_AREA_EDIT, "修改所在地");
			if(pMain->m_bAreaDelete)
                menu.AppendMenu(MF_ENABLED|MF_STRING, ID_AREA_DELETE, "删除所在地");
			else
				menu.AppendMenu(MF_DISABLED|MF_GRAYED, ID_AREA_DELETE, "删除所在地");

			menu.AppendMenu(MF_ENABLED|MF_STRING, ID_AREA_CLEAR, "清空所在地列表");
			menu.AppendMenu(MF_STRING, MF_SEPARATOR);
			menu.AppendMenu(MF_STRING, ID_CONFIG_NEW, "新建配置");
			menu.AppendMenu(MF_STRING, ID_CONFIG_LOAD, "加载配置");
			menu.AppendMenu(MF_STRING, ID_CONFIG_SAVE, "保存配置");
			
			CPoint pt;
			pt=point;
			this->ClientToScreen(&pt);
			menu.TrackPopupMenu(TPM_LEFTALIGN, pt.x, pt.y, pMain);

			//menu.DestroyMenu();//采用BCMenu后要执行清理

		}
	/////

}

int CListCtrlArea::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CMyListCtrl::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
	SetExtendedStyle(LVS_REPORT|LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
    //::SendMessage(pListArea->m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE,
     // LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);

	InsertColumn(0,"所在地",LVCFMT_RIGHT,250);
	InsertColumn(1,"起征点  (元)",LVCFMT_RIGHT,250);
    m_ColType.Add("11");
	m_ColType.Add("4");
	EnableSort(TRUE);

	/*
	CString area[4]={"北京","上海","深圳","其它"};
	CString from[4]={"1000","1000","1600","800"};
	int nitem;
	for(int i=0;i<4;i++)
	{
		nitem=InsertItem(i,area[i]);
		SetItemText(nitem,1,from[i]);
	}
	*/
	return 0;
}


void CListCtrlArea::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	//::SendMessage(this->GetSafeHwnd(),LVN_ITEMCHANGED,0,0);

	CMainFrame *pMainFrm;
    pMainFrm=(CMainFrame *)(AfxGetApp()->m_pMainWnd);
	int count=GetSelectedCount();
	if(0==count)
	{
		pMainFrm->m_bAreaEdit=FALSE;
	    pMainFrm->m_bAreaDelete=FALSE;
	}
	else
	{
        pMainFrm->m_bAreaEdit=TRUE;
	    pMainFrm->m_bAreaDelete=TRUE;
        ////
        POSITION pos = GetFirstSelectedItemPosition();
	    int m=GetNextSelectedItem(pos);
        AREA_T area_t;
	    CString str;
	    str=GetItemText(m,0);
	    area_t.area=str;
        str=GetItemText(m,1);
	    area_t.start=atof(str);
        //::SendMessage(pMainFrm->m_pComputView->GetSafeHwnd(),WM_UPDATE_AREA,0,(LPARAM)(&area_t));
	    pMainFrm->m_pComputView->UpdateDisplay();
	    ////
	}

	///////
	CMyListCtrl::OnLButtonDown(nFlags, point);
}

⌨️ 快捷键说明

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