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

📄 piliangputin.cpp

📁 一个长度信息管理系统。主要包含了界面编程和对文件操作。
💻 CPP
字号:
// PiliangPutin.cpp : implementation file
//

#include "stdafx.h"
#include "Measure.h"
#include "PiliangPutin.h"
#include "ReadFile.h"

#include "ReadFile.h"

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

/////////////////////////////////////////////////////////////////////////////
// CPiliangPutin dialog


CPiliangPutin::CPiliangPutin(CWnd* pParent /*=NULL*/)
: CBDialog(CPiliangPutin::IDD, pParent)
{   m_brush.CreateSolidBrush(RGB(255,218,185));
	//{{AFX_DATA_INIT(CPiliangPutin)
	//}}AFX_DATA_INIT
}


void CPiliangPutin::DoDataExchange(CDataExchange* pDX)
{
	CBDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPiliangPutin)
	DDX_Control(pDX, IDC_Ok, m_ok);
	DDX_Control(pDX, IDC_Del, m_del);
	DDX_Control(pDX, IDC_Putin, m_daoru);
	DDX_Control(pDX, IDC_LIST1, m_list);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPiliangPutin, CBDialog)
//{{AFX_MSG_MAP(CPiliangPutin)
ON_BN_CLICKED(IDC_Putin, OnPutin)
ON_BN_CLICKED(IDC_Shut, OnShut)
ON_BN_CLICKED(IDC_Del, OnDel)
	ON_BN_CLICKED(IDC_Ok, OnOk)
	ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1)
	ON_WM_CTLCOLOR()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPiliangPutin message handlers

void CPiliangPutin::OnPutin() 
{
	// TODO: Add your control notification handler code here
	
	//path存放文件路径,context存放文件内容。
	CString path,context="";
	
	long numb=0;
	
	char *p1;
	char *p2;
	char *p2b;
	
	CString pl1,pll1;
	CString pl2,pll2;
	CString pl3,pll3;
	CString str1,str2;
	//每次读取256个字节,放入readBuffer中
    char readBuffer[258];
    memset(readBuffer,0,258);  //清零
	//readNum存放实际读取的字节数
    unsigned long readNum=0;
    
    CFileDialog m_open(TRUE,TEXT("text"),NULL,NULL,TEXT("text|*.txt"),NULL);
    if(m_open.DoModal()!=IDOK) return;
    path=m_open.GetPathName();
    HANDLE hFile;
    //创建文件
    hFile=CreateFile(path,GENERIC_READ,NULL,NULL,OPEN_EXISTING,NULL,NULL);
    if(hFile==INVALID_HANDLE_VALUE)
    {    MessageBox(_T("文件打开失败!"),_T("错误"),MB_OK);
	return ;
    }
    //读取文件
	ReadFile(hFile,readBuffer,256,&readNum,NULL);
	
    context=context+readBuffer;
	
    //如果readNum>=256说明文件还没有读完,继续读取
    while(readNum>=256)
    {    
        memset(readBuffer,0,258);//清零
        ReadFile(hFile,readBuffer,256,&readNum,NULL);
        context=context+readBuffer;
    }

    //显示数据
    //SetDlgItemText(IDC_EDIT1,context);
	
    char *p;                                           //用数组方法实现
	char *pc;
	p=(LPSTR)(LPCTSTR) context;
	pc=(LPSTR)(LPCTSTR) context;
	long count;
	count=context.GetLength();
    for(long i=0;i<count;i++)//得出行数
	{  
		if(*p==';')
		{numb+=1;
		}
		p++;
	}
	for(long num=0;num<numb;num++)//将一行分成两块
	{  int j=0;
	p1=pc;
	while(*pc!=';')
	{ 
		j++;
		pc++;
		
	}
	
	pl1=p1;
	pll1=pl1.Left(j);
	
	int m=0;
	p2=(LPSTR)(LPCTSTR) pll1;
	p2b=p2;
	while(*p2!=',')
	{
		m++;
		p2++;
		
	}
	
	pl2=p2b;
	pll2=pl2.Left(m);
	str1=pll2;
	//str1.TrimLeft();
	//str1.TrimRight();
	//str1.Replace(0,"");
	m_list.InsertItem(num,str1);
	int n=0;
	p2++;
	pl3=p2;
	while(*p2!=NULL)
	{   
		n++;
		p2++;
	}
	pll3=pl3.Left(n);
	str2=pll3;
	//str2.TrimRight();
	//str2.TrimLeft();
	//str2.Replace(0,"");
	m_list.SetItemText(num,1,str2);
	pc++;
	pc++;
	pc++;
	
	}
	/*	用ReadFile函数实现
	CString Name;
	ReadLineFile fil;
	fil.OpenFile(Name);*/
	
	long max;
	max=m_list.GetItemCount();
	for(long q=0;q<max;q++)
	{
        m_list.SetCheck(q,true);  
	}
	
	
}


void CPiliangPutin::OnShut() 
{
	// TODO: Add your control notification handler code here
	
	
}

BOOL CPiliangPutin::OnInitDialog() 
{
	CBDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
    SetBitmapStyle(StyleStretch);
	SetBitmap(IDB_BITMAP1);

	m_del.LoadBitmaps(IDB_DELNORMAL,IDB_DELDOWN,IDB_DELUP,IDB_PDISABLE);
    m_del.SetToolTipText("删除所选数据");
	m_daoru.LoadBitmaps(IDB_PUTINNORMAL,IDB_PUTINDOWN,IDB_PUTINUP,IDB_PDISABLE);
    m_daoru.SetToolTipText("导入数据");
	m_ok.LoadBitmaps(IDB_PLNORMAL,IDB_PLDOWN,IDB_PLUP,IDB_PDISABLE);
		m_ok.SetToolTipText("确定退出");
	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,300,100);
	
	//m_daoru.SetBitmap(LoadBitmap(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDB_BITMAP7)));
	//m_del.SetBitmap(LoadBitmap(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDB_BITMAP8)));
	//m_ok.SetBitmap(LoadBitmap(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDB_BITMAP9)));
	return TRUE;  // return TRUE unless you set the focus to a control
	// EXCEPTION: OCX Property Pages should return FALSE
}

void CPiliangPutin::OnDel() 
{
	// TODO: Add your control notification handler code here
	long count;
	char temp[10];
	long num;
	CString str1,str2;
	CListCtrl* pListCtrl = (CListCtrl*) GetDlgItem(IDC_LIST1);
    ASSERT(pListCtrl != NULL);
	
	
	POSITION pos = pListCtrl->GetFirstSelectedItemPosition();
	
	if (pos == NULL)
		TRACE0("No items were selected!\n");
	else
	{
		while (pos)
		{ 
			
			int nItem=m_list.GetNextSelectedItem(pos);
			m_list.DeleteItem(nItem);
			count= m_list.GetItemCount();
			for(int i=nItem;i<=count;i++)
			{   
				str1=m_list.GetItemText(i,0);
				strcpy(temp,str1);
				num=atol(temp);
				num--;
				str2.Format("%ld",num);
				m_list.SetItemText(i,0,str2);
			}
			
		}
	}
}

void CPiliangPutin::OnOk() 
{
	// TODO: Add your control notification handler code here

	LPCCellArray pCellArray = g_SysApp.GetCellArray();//定义pCellArray
	long count = m_list.GetItemCount();//得到列表框中的数据个数

	long l_CellCount = pCellArray->GetCount();//得到数组的数量

	CString strValue;
	double dbValue;

	CLength*	l_pLength;
	CCellBase*	l_pCellBase;
	for(int i = 0; i < count; i++)
	{
		strValue = m_list.GetItemText(i, 1);//得到第i行第1列的数据

		dbValue = atof(strValue);//将strValue转化成 float型的

		l_pLength = new CLength(dbValue);//动态分配数组,l_pLength为数组名。
		l_pCellBase = l_pLength;

		l_pCellBase->SetNo(l_CellCount++);//将一个元素放到数组的指定位置

		pCellArray->Add(l_pLength);//添加一个元素到数组
	}
CDialog::OnOK();
}

void CPiliangPutin::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
    CListCtrl* pListCtrl = (CListCtrl*) GetDlgItem(IDC_LIST1);
    ASSERT(pListCtrl != NULL);
    POSITION pos = pListCtrl->GetFirstSelectedItemPosition();
   
   if (pos == NULL)
      TRACE0("No items were selected!\n");
   else
   {
   while (pos)
   { 
	
	int nItem=m_list.GetNextSelectedItem(pos);
    m_list.SetCheck(nItem,true);
	int n;
	n=m_list.GetCheck(nItem);
	if(n!=0)
	{
		
	}
	
   }
   } 
	
	

	
	*pResult = 0;
}

HBRUSH CPiliangPutin::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
	return m_brush;
}

⌨️ 快捷键说明

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