📄 piliangputin.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 + -