lengthinq.cpp

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

CPP
393
字号
// LengthInq.cpp : implementation file
//
#include "ComboListCtrl.h"
#include "stdafx.h"
#include "Measure.h"
#include "LengthInq.h"
#include "Afx.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;

#endif
#include "ComboListCtrl.h"

/////////////////////////////////////////////////////////////////////////////
// LengthInq dialog


LengthInq::LengthInq(CWnd* pParent /*=NULL*/)
	: CBDialog(LengthInq::IDD, pParent)
{
	m_editBrush.CreateSolidBrush(RGB(255,250,205));
	m_brushslen.CreateSolidBrush(RGB(255,255,240));
	//{{AFX_DATA_INIT(LengthInq)
	//}}AFX_DATA_INIT
}


void LengthInq::DoDataExchange(CDataExchange* pDX)
{
	CBDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(LengthInq)
	DDX_Control(pDX, IDC_SHOWALL, m_showall);
	DDX_Control(pDX, IDCANCEL, m_cancel);
	DDX_Control(pDX, IDC_Retrieve, m_lengthretrieve);
	DDX_Control(pDX, IDC_AreaRet, m_ok);
	DDX_Control(pDX, IDC_DownBou, m_downb);
	DDX_Control(pDX, IDC_UpBound, m_upb);
	DDX_Control(pDX, IDC_Data, m_numvalue);
	DDX_Control(pDX, IDC_LIST1, m_list1);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(LengthInq, CBDialog)
	//{{AFX_MSG_MAP(LengthInq)
	ON_BN_CLICKED(IDC_PutOut, OnPutOut)
	ON_BN_CLICKED(IDC_Retrieve, OnRetrieve)
	ON_BN_CLICKED(IDC_AreaRet, OnAreaRet)
	ON_WM_COPYDATA()
	ON_WM_CTLCOLOR()
	ON_BN_CLICKED(IDC_SHOWALL, OnShowall)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// LengthInq message handlers



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

	// TODO: Add extra initialization here
    SetBitmapStyle(StyleStretch);
	SetBitmap(IDB_BITMAP1);


	m_brush.CreateSolidBrush(RGB(126,192,238 ));
	m_brushfanwei.CreateSolidBrush(RGB(255,218,185));
    m_brushlenview.CreateSolidBrush(RGB(255,218,185));
    m_brushsup.CreateSolidBrush(RGB(255,218,185));
    m_brushsdown.CreateSolidBrush(RGB(255,218,185));
	//m_brushslen.CreateSolidBrush(RGB(255,218,185));


	//m_ok.SetBitmap(LoadBitmap(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDB_BITMAP9)));
	m_cancel.LoadBitmaps(IDB_CSHUTNORMAL,IDB_CSHUTDOWN,IDB_CSHUTUP,IDB_PDISABLE);
	m_cancel.SetToolTipText("退出");


	m_ok.LoadBitmaps(IDB_COKNORMAL,IDB_COKDOWN,IDB_COKUP,IDB_PDISABLE);
    m_ok.SetToolTipText("开始搜索");


	m_lengthretrieve.LoadBitmaps(IDB_RESEACHNORMAL,IDB_RESEACHDOWN,IDB_RESEACHUP,IDB_PDISABLE);
    m_lengthretrieve.SetToolTipText("开始检索");

	m_showall.LoadBitmaps(IDB_BACKNORMAL,IDB_BACKDOWN,IDB_BACKUP,IDB_PDISABLE);
    m_showall.SetToolTipText("显示输入的所有数据");
    
	
	//m_lengthretrieve.SetBitmap(LoadBitmap(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDB_BITMAP3)));
	CString strValidChars = "0123456789.";
	DWORD dw;
	dw=m_list1.GetExtendedStyle();
	dw|=LVS_EX_CHECKBOXES|LVS_EX_FULLROWSELECT |LVS_EX_GRIDLINES;
	m_list1.SetExtendedStyle(dw);
    m_list1.SetBkColor(RGB(0xec,0xf1,0xfd));
    m_list1.SetTextBkColor(RGB(0xfe,0xFF,0xc6));
	m_list1.SetValidEditCtrlCharacters(strValidChars);
	m_list1.SetReadOnlyColumns(0);
	m_list1.EnableVScroll(); 
    m_list1.InsertColumn(0,"序号",LVCFMT_LEFT,50,100);
    m_list1.InsertColumn(1,"长度值",LVCFMT_LEFT,200,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++)
	{  
	   PB=PCellArray->GetArrayItem(i);
	PL=(CLength*)PB;
	Numb=PL->GetNo();
	Data=PL->GetLen();
	nItem.Format("%.4lf",Data);
	
	
	Numb=PB->GetNo();
	//Numb1=Numb+1;
	No.Format("%ld",Numb);
	nItem.Format("%.4lf",Data);
	
	
	m_list1.InsertItem(i,No);
	m_list1.SetItemText(i,1,nItem);
	
	
	}
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE

}



void LengthInq::OnPutOut() 
{
	// TODO: Add your control notification handler code here
    CString fl1,s1,s2,str,strl;
	//char str[20],strl[20];
	
	
fl1="my data.txt";
//char str[20];
//char *p1;
CString A=',';
CString B='\r';
CString C='\n';
CString D=';';



	CCellArray* PCellArray=g_SysApp.GetCellArray();
	long max;
	max=PCellArray->GetCount();



CFileDialog dlg(false,NULL, fl1,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,NULL, NULL);

char cf[]="文本文件(*.txt)";     //过滤文件
dlg.m_ofn.lpstrFilter=cf;              //在对话框中显示过滤的类型

int ir=dlg.DoModal();                  //模态显示另存对话框
CString wjm=dlg.GetPathName();         //获取文件路径文件名全称
CFile fil;                             //声明一个文件类对象
if(ir=IDOK)                            //如果单击另存对话框打开
{
fil.Open(wjm,CFile::modeCreate|CFile::modeWrite);//打开文件
                                                 //用指向fil的指针创建
    /* CArchive ar(&fil,CArchive::store);                           
for(int i=0;i<max;i++)
{   
    
	
	s1=m_list1.GetItemText(i,0);
    s2=m_list1.GetItemText(i,1);
    
//	p1=(LPSTR)(LPCTSTR) str;
	//long len=s1.GetLength();
//	for(long i=0;i<len;i++)
	//{
     // if(*p1!='\0')
	 // {
	//	  str[i]=*p1;
	//	  ar<<str[i];
	//	  p1++;
	 // }
//	}

	ar<<s1;
	ar<<A;
    ar<<s2;
	ar<<D;
	ar<<B<<C;


    //str[20].Empty();
	//strl[20].Empty();
    
	

}
ar.Flush();
ar.Close();*/

  for(int i=0;i<max;i++)
  {   
    
    str=m_list1.GetItemText(i,0);
    strl=m_list1.GetItemText(i,1);
	fil.Write(str,str.GetLength());
	fil.Write(A,1);
	fil.Write(strl,strl.GetLength());
	fil.Write(D,1);
	fil.Write(B,1);
	fil.Write(C,1);
  }
}
fil.Close();	
}

void LengthInq::OnRetrieve() 
{
	// TODO: Add your control notification handler code here
    CString str1,str2;
	long max;
	m_numvalue.GetWindowText(str1);
	max=m_list1.GetItemCount();
	for(long i=0;i<max;i++)
	{
	    str2=m_list1.GetItemText(i,1);
		if(str2!=str1)
		{
		   m_list1.DeleteItem(i);
		   i--;
		   max--;
		}
	}

	
}

void LengthInq::OnAreaRet() 
{
	// TODO: Add your control notification handler code here
	CString str1,str2,strl1,strl2;
	long s1,s2,sl1;
    CString str1b,str2b;
	char temp1[30],temp2[30],templ1[30];
	long max;
	
	max=m_list1.GetItemCount();
	m_upb.GetWindowText(str1);
	m_downb.GetWindowText(str2);
	strcpy(temp1,str1);
	strcpy(temp2,str2);
	s1=atol(temp1);
	s2=atol(temp2);
	for(long i=0;i<max;i++)
	{
       strl1=m_list1.GetItemText(i,1);
	   strcpy(templ1,strl1);
	   sl1=atol(templ1);
	   if(sl1>s1||sl1<s2)
	   {
           m_list1.DeleteItem(i);
		   i--;
		   max--;
	   }
	}


	
}

BOOL LengthInq::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) 
{
	// TODO: Add your message handler code here and/or call default
	
	return CDialog::OnCopyData(pWnd, pCopyDataStruct);
}





HBRUSH LengthInq::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(pWnd->GetDlgCtrlID()==IDC_FANWEI_STATIC)
	{
		pDC->SetTextColor(RGB(0,0,255));
		pDC->SetBkMode(TRANSPARENT);
		return m_brushslen;
	}
    if(IDC_LENVIEW_STATIC==pWnd->GetDlgCtrlID())
	{
         pDC->SetTextColor(RGB(0,0,255));
		pDC->SetBkMode(TRANSPARENT);
		//return m_brushlenview;
	}
	if(IDC_UP==pWnd->GetDlgCtrlID())
	{
     pDC->SetTextColor(RGB(0,0,255));
	 pDC->SetBkMode(TRANSPARENT);
     return m_brushslen;
	}
	if(IDC_DOWN==pWnd->GetDlgCtrlID())
	{
        pDC->SetTextColor(RGB(0,0,255));
		pDC->SetBkMode(TRANSPARENT);
		return m_brushslen;
	}
    if(IDC_DATALEN_STATIC==pWnd->GetDlgCtrlID())
	{   
		CBrush   br;   
		br.CreateStockObject(NULL_BRUSH);
        pDC->SetTextColor(RGB(0,0,255));
		pDC->SetBkMode(TRANSPARENT);
		
		return 	br;
	}
	if(IDC_Data==pWnd->GetDlgCtrlID())
	{
		
    pDC->SetTextColor(RGB(65,105,225));
	pDC->SetBkColor(RGB(255,250,205));
	return m_editBrush;
	}
	if(IDC_UpBound==pWnd->GetDlgCtrlID())
	{
		
    pDC->SetTextColor(RGB(65,105,225));
	pDC->SetBkColor(RGB(255,250,205));
	return m_editBrush;
	}
	if(IDC_DownBou==pWnd->GetDlgCtrlID())
	{
		
    pDC->SetTextColor(RGB(65,105,225));
	pDC->SetBkColor(RGB(255,250,205));
	return m_editBrush;
	}
	return m_brush;
}

void LengthInq::OnShowall() 
{
	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++)
	{  
	   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_list1.InsertItem(i,No);
	m_list1.SetItemText(i,1,nItem);
	
	
	}
}

⌨️ 快捷键说明

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