lengthview.cpp

来自「一个长度信息管理系统。主要包含了界面编程和对文件操作。」· C++ 代码 · 共 514 行

CPP
514
字号
// LengthView.cpp : implementation file
//

#include "stdafx.h"
#include "Measure.h"
#include "LengthView.h"
#include "DataVessel.h"

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

/////////////////////////////////////////////////////////////////////////////
// CLengthView dialog


CLengthView::CLengthView(CWnd* pParent /*=NULL*/)
: CBDialog(CLengthView::IDD, pParent)
{   m_editbrush.CreateSolidBrush(RGB(255,250,205));
	m_brush.CreateSolidBrush(RGB(126,192,238 ));
	m_sxjsbrush.CreateSolidBrush(RGB(255,250,250));
	//{{AFX_DATA_INIT(CLengthView)
	//}}AFX_DATA_INIT
}


void CLengthView::DoDataExchange(CDataExchange* pDX)
{
	CBDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CLengthView)
	DDX_Control(pDX, IDCANCEL, m_guanbi);
	DDX_Control(pDX, IDC_Retrieve, m_retrieve);
	DDX_Control(pDX, IDC_DownPage, m_cnext);
	DDX_Control(pDX, IDC_UpPage, m_cback);
	DDX_Control(pDX, IDC_PAGECOUNT, m_pagecount);
	DDX_Control(pDX, IDC_PAGEEDIT, m_pageedit);
	DDX_Control(pDX, IDC_ITEMEDIT, m_itemedit);
	DDX_Control(pDX, IDC_NumPage, m_spedata);
	DDX_Control(pDX, IDC_LIST1, m_list);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CLengthView, CBDialog)
//{{AFX_MSG_MAP(CLengthView)
ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1)
ON_BN_CLICKED(IDC_Retrieve, OnRetrieve)
ON_BN_CLICKED(IDC_DownPage, OnDownPage)
ON_BN_CLICKED(IDC_UpPage, OnUpPage)
ON_EN_CHANGE(IDC_PAGEEDIT, OnChangePageedit)
	ON_WM_CTLCOLOR()
	ON_WM_CANCELMODE()
	ON_WM_CAPTURECHANGED()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLengthView message handlers

void CLengthView::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	
	*pResult = 0;
}

BOOL CLengthView::OnInitDialog() 
{
		CBDialog::OnInitDialog();

	// TODO: Add extra initialization here
    SetBitmapStyle(StyleStretch);
	SetBitmap(IDB_BITMAP1);
		
	m_cback.LoadBitmaps(IDB_PNORMAL,IDB_PMOUSEDOWN,IDB_PMOUSEUP,IDB_PDISABLE);
    m_cback.SetToolTipText("返回上页");
	
	m_cnext.LoadBitmaps(IDB_PDNORMAL,IDB_PDMOUSEDOWN,IDB_PDMOUSEUP,IDB_PDISABLE);
    m_cnext.SetToolTipText("浏览下页");
	
	m_retrieve.LoadBitmaps(IDB_NORMALBLUE,IDB_MOUSEDOWN,IDB_MOUSEUP,IDB_DISABLE);
    m_retrieve.SetToolTipText("开始检索");
	

	m_guanbi.LoadBitmaps(IDB_CSHUTNORMAL,IDB_CSHUTDOWN,IDB_CSHUTUP,IDB_DISABLE);
    m_guanbi.SetToolTipText("退出");
	
	//m_guanbi.SetBitmap(LoadBitmap(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDB_BITMAP13)));
	DWORD dw;
	dw=m_list.GetExtendedStyle();
	dw|=LVS_EX_CHECKBOXES|LVS_EX_FULLROWSELECT |LVS_EX_GRIDLINES;
	m_list.SetExtendedStyle(dw);
	m_list.SetBkColor(RGB(0xec,0xf1,0xfd));
	m_list.SetTextBkColor(RGB(0xfe,0xFF,0xc6));
	
    m_list.InsertColumn(0,"序号",LVCFMT_LEFT,50,100);
    m_list.InsertColumn(1,"长度值",LVCFMT_LEFT,144,100);
	
	CString nItem,No;
	
	double Data;
	long Numb;
	LPCCellBase PB;
	CLength* PL;
	CCellArray* PCellArray=g_SysApp.GetCellArray();
	long max;
	max=PCellArray->GetCount();
	
	for(int i=0;i<max;i++)//将第一页显示
	{  if(i<10) 
	   {PB=PCellArray->GetArrayItem(i);
	PL=(CLength*)PB;
	Numb=PL->GetNo();
	Data=PL->GetLen();
	nItem.Format("%.4lf",Data);
	
	
	Numb=PB->GetNo();
	No.Format("%ld",Numb);
	nItem.Format("%.4lf",Data);
	
	
	m_list.InsertItem(i,No);
	m_list.SetItemText(i,1,nItem);
	}
	if(max<10)//输入数据的个数大于15和小于15的属性显示
	{
		char stemp[10];
		ltoa(max,stemp,10);
		m_itemedit.SetWindowText(stemp);
		
	}
	else
	{
		m_itemedit.SetWindowText("10");
	}
	m_pageedit.SetWindowText("1");
	}
	long x;
	x=max/10;
	x+=1;
	char s[100];
	ltoa(x,s,10);
	m_pagecount.SetWindowText(s);
	return TRUE;  // return TRUE unless you set the focus to a control
	// EXCEPTION: OCX Property Pages should return FALSE
}

void CLengthView::OnRetrieve() //检索按钮
{
	// TODO: Add your control notification handler code here
    CString nItem,No;
	CString w;
	double Data;
	long Numb;
	LPCCellBase PB;//得出数据的页数
	CLength* PL;
	CCellArray* PCellArray=g_SysApp.GetCellArray();
	long max;
	max=PCellArray->GetCount();
	long nSheet;
	nSheet=max/10;//得到数据显示的页数
    long n;
    CString str_Edit;
	m_spedata.GetWindowText(str_Edit);//得到要检索的页数
	if(str_Edit=="")
	{
		AfxMessageBox("请输入页数!");
		return;
		
	}
	else
	{
		n=atol(str_Edit);
		
	}
    
	n--;
	
	
	if(n<0||n>nSheet)
	{
		 long nsheet;
			nsheet=nSheet+1;
			w.Format("%ld",nsheet);
			AfxMessageBox("请输入1到"+w+"页中的某页!");
		return;
	}
	else
		if(n<nSheet)
		{   m_list.DeleteAllItems();
		for(long i=0;i<10;i++)
		{   
			PB=PCellArray->GetArrayItem((n*10)+i);
			PL=(CLength*)PB;
			Numb=PL->GetNo();
			Data=PL->GetLen();
			nItem.Format("%.4lf",Data);
			
			
			Numb=PB->GetNo();
			No.Format("%ld",Numb);
			nItem.Format("%.4lf",Data);
			
			
			m_list.InsertItem(i,No);
			m_list.SetItemText(i,1,nItem);
		}
		m_itemedit.SetWindowText("10");
		}
		else
		{   m_list.DeleteAllItems();
		int NumbItem;
		NumbItem=max%10;
		for(long i=0;i<NumbItem;i++)
		{   
			PB=PCellArray->GetArrayItem((n*10)+i);
			PL=(CLength*)PB;
			Numb=PL->GetNo();
			Data=PL->GetLen();
			nItem.Format("%.4lf",Data);
			
			
			Numb=PB->GetNo();
			No.Format("%ld",Numb);
			nItem.Format("%.4lf",Data);
			
			
			m_list.InsertItem(i,No);
			m_list.SetItemText(i,1,nItem);
			
		}
		char stem[10];
	       ltoa(NumbItem,stem,10);
           m_itemedit.SetWindowText(stem);
		}
		char stemp[100];
		n++;
		ltoa(n,stemp,10);
        m_pageedit.SetWindowText(stemp);
}

void CLengthView::OnDownPage() 
{
	// TODO: Add your control notification handler code here
    CString start;
	long n1,n;
    start=m_list.GetItemText(0,0);
	n1=atol(start);
	n=n1/10;
	n+=1;
	
	
	
    CString nItem,No;
	double Data;
	long Numb;
	
	LPCCellBase PB;//得出数据的页数
	CLength* PL;
	CCellArray* PCellArray=g_SysApp.GetCellArray();
	
    long max;
	max=PCellArray->GetCount();
	long nSheet;
	nSheet=max/10;
	
	
    
	
	if(n<=(nSheet-1))
	{   m_list.DeleteAllItems();
	for(long i=0;i<10;i++)
	{
		PB=PCellArray->GetArrayItem((n*10)+i);
		PL=(CLength*)PB;
		Numb=PL->GetNo();
		Data=PL->GetLen();
		nItem.Format("%.4lf",Data);
		
		
		Numb=PB->GetNo();
		No.Format("%ld",Numb);
		nItem.Format("%.4lf",Data);
		
		
		m_list.InsertItem(i,No);
		m_list.SetItemText(i,1,nItem);
	}
	m_itemedit.SetWindowText("10");
	}
	else 
		if(n==nSheet)
		{   m_list.DeleteAllItems();
		int NumbItem;
		NumbItem=max%10;
		for(long i=0;i<NumbItem;i++)
		{
			PB=PCellArray->GetArrayItem((n*10)+i);
			PL=(CLength*)PB;
			Numb=PL->GetNo();
			Data=PL->GetLen();
			nItem.Format("%.4lf",Data);
			
			
			Numb=PB->GetNo();
			No.Format("%ld",Numb);
			nItem.Format("%.4lf",Data);
			
			
			m_list.InsertItem(i,No);
			m_list.SetItemText(i,1,nItem);
			
		}
		char stem[10];
	       ltoa(NumbItem,stem,10);
           m_itemedit.SetWindowText(stem);
		}
		char stemp[100];
		n+=1;
		if(n>=1&&n<=(nSheet+1))
		{
			ltoa(n,stemp,10);
			m_pageedit.SetWindowText(stemp);
		}
}




void CLengthView::OnUpPage() 
{
	// TODO: Add your control notification handler code here
	
	CString start;
	long n1,n;
    start=m_list.GetItemText(0,0);
	n1=atol(start);
	n=n1/10;
	n-=1;
	
	
	
    CString nItem,No;
	double Data;
	long Numb;
	
	LPCCellBase PB;//得出数据的页数
	CLength* PL;
	CCellArray* PCellArray=g_SysApp.GetCellArray();
	
    long max;
	max=PCellArray->GetCount();
	long nSheet;
	nSheet=max/10;
	
	
    
	
	if(n>=0)
	{   m_list.DeleteAllItems();
	for(long i=0;i<10;i++)
	{
		PB=PCellArray->GetArrayItem((n*10)+i);
		PL=(CLength*)PB;
		Numb=PL->GetNo();
		Data=PL->GetLen();
		nItem.Format("%.4lf",Data);
		
		
		Numb=PB->GetNo();
		No.Format("%ld",Numb);
		nItem.Format("%.4lf",Data);
		
		
		m_list.InsertItem(i,No);
		m_list.SetItemText(i,1,nItem);
	}
	m_itemedit.SetWindowText("10");
	}
	char stemp[100];
	n+=1;
	if(n>=1&&n<=(nSheet+1))
	{ ltoa(n,stemp,10);
	
	m_pageedit.SetWindowText(stemp);
		  return;
	}
	
}

void CLengthView::OnChangePageedit() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CDialog::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	// TODO: Add your control notification handler code here
	
	
}

HBRUSH CLengthView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	
	// TODO: Change any attributes of the DC here
	
	// TODO: Return a different brush if the default is not desired
	if(IDC_YEMIAN_STATIC==pWnd->GetDlgCtrlID())
	{
		pDC->SetTextColor(RGB(0,0,255));
		pDC->SetBkMode(TRANSPARENT);
		//return m_sxjsbrush;
	}
if(IDC_PAGE==pWnd->GetDlgCtrlID())
	{
		CBrush   br;   
		br.CreateStockObject(NULL_BRUSH);
		pDC->SetTextColor(RGB(0,0,255));
		pDC->SetBkMode(TRANSPARENT);
		return br;
	}
if(IDC_BNPAGE_STATIC==pWnd->GetDlgCtrlID())
	{
		CBrush   br;   
		br.CreateStockObject(NULL_BRUSH);
		pDC->SetTextColor(RGB(0,0,255));
		//pDC->SetBkMode(TRANSPARENT);
		return br;
	}
if(IDC_GONG1==pWnd->GetDlgCtrlID())
	{
		pDC->SetTextColor(RGB(65,105,225));
		pDC->SetBkMode(TRANSPARENT);
		return m_brush;
	}
if(IDC_ye2==pWnd->GetDlgCtrlID())
	{
		pDC->SetTextColor(RGB(65,105,225));
		pDC->SetBkMode(TRANSPARENT);
		return m_brush;
	}
if(IDC_DI==pWnd->GetDlgCtrlID())
	{
		pDC->SetTextColor(RGB(65,105,225));
		pDC->SetBkMode(TRANSPARENT);
		return m_brush;
	}
if(IDC_GONG==pWnd->GetDlgCtrlID())
	{
		pDC->SetTextColor(RGB(65,105,225));
		pDC->SetBkMode(TRANSPARENT);
		return m_brush;
	}
if(IDC_XIANG==pWnd->GetDlgCtrlID())
	{
		pDC->SetTextColor(RGB(65,105,225));
		pDC->SetBkMode(TRANSPARENT);
		return m_brush;
	}
  if(IDC_NumPage==pWnd->GetDlgCtrlID())
{
	pDC->SetTextColor(RGB(65,105,225));
	pDC->SetBkColor(RGB(255,250,205));
	return m_editbrush;

}
  if(IDC_PAGECOUNT==pWnd->GetDlgCtrlID())
{
	pDC->SetTextColor(RGB(65,105,225));
	pDC->SetBkColor(RGB(126,192,238));
	//pDC->SetBkMode(TRANSPARENT);
	return m_brush;

}
  if(IDC_PAGEEDIT==pWnd->GetDlgCtrlID())
{
	pDC->SetTextColor(RGB(65,105,225));
	pDC->SetBkColor(RGB(126,192,238));
	//pDC->SetBkMode(TRANSPARENT);
	return m_brush;

}
  if(IDC_ITEMEDIT==pWnd->GetDlgCtrlID())
{
	pDC->SetTextColor(RGB(65,105,225));
	pDC->SetBkColor(RGB(126,192,238));
	//pDC->SetBkMode(TRANSPARENT);
	return m_brush;

}
	return m_brush;
}


void CLengthView::OnCancelMode() 
{
	CDialog::OnCancelMode();
	
	// TODO: Add your message handler code here
	
}

void CLengthView::OnCaptureChanged(CWnd *pWnd) 
{
	// TODO: Add your message handler code here
	
	CDialog::OnCaptureChanged(pWnd);
}

⌨️ 快捷键说明

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