dangelurudlg.cpp

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

CPP
270
字号
// DanGeLuRuDlg.cpp : implementation file
//
#include <math.h>
#include <stdlib.h>
#include "stdafx.h"
#include "Measure.h"
//#include "..\\comboxlist\\ComboListCtrl.h" 
#include "DanGeLuRuDlg.h"
#include "DataVessel.h"

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

/////////////////////////////////////////////////////////////////////////////
// CDanGeLuRuDlg dialog


CDanGeLuRuDlg::CDanGeLuRuDlg(CWnd* pParent /*=NULL*/)
	: CBDialog(CDanGeLuRuDlg::IDD, pParent)
{   
	m_editbrush.CreateSolidBrush(RGB(255,250,205));
	//{{AFX_DATA_INIT(CDanGeLuRuDlg)
	m_CSpecifyEdit1 = _T("");
	//}}AFX_DATA_INIT
}


void CDanGeLuRuDlg::DoDataExchange(CDataExchange* pDX)
{
	CBDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDanGeLuRuDlg)
	DDX_Control(pDX, IDC_BUTTON_DEL, m_butndel);
	DDX_Control(pDX, IDCANCEL, m_cancel);
	DDX_Control(pDX, IDOK, m_ok);
	DDX_Control(pDX, IDC_TIANJIA, m_tianjia);
	DDX_Control(pDX, IDC_XIUGAI, m_modf);
	DDX_Control(pDX, IDC_EDIT_LENGTH, m_CSpecifyEdit);
	DDX_Control(pDX, IDC_LIST_LENGTH, m_CLengthListCtrl);
	DDX_Text(pDX, IDC_EDIT_LENGTH, m_CSpecifyEdit1);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDanGeLuRuDlg, CBDialog)
	//{{AFX_MSG_MAP(CDanGeLuRuDlg)
	ON_BN_CLICKED(IDC_TIANJIA, OnTianjia)
	ON_BN_CLICKED(IDC_XIUGAI, OnXiugai)
	ON_NOTIFY(NM_CLICK, IDC_LIST_LENGTH, OnClickListLength)
	ON_WM_CTLCOLOR()
	ON_BN_CLICKED(IDC_BUTTON_DEL, OnButtonDel)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDanGeLuRuDlg message handlers

void CDanGeLuRuDlg::InitListCtrl()
{

	m_CSpecifyEdit.m_strValidChars="0123456789.";
	m_CSpecifyEdit.n_select=1;
	DWORD dw;
	dw=m_CLengthListCtrl.GetExtendedStyle();
	dw|=LVS_EX_CHECKBOXES|LVS_EX_FULLROWSELECT |LVS_EX_GRIDLINES;
	m_CLengthListCtrl.SetExtendedStyle(dw);
	m_CLengthListCtrl.SetBkColor(RGB(0xec,0xf1,0xfd));
	m_CLengthListCtrl.SetTextBkColor(RGB(0xfe,0xFF,0xc6));
	CString strValidChars = "0123456789.";
    m_CLengthListCtrl.SetValidEditCtrlCharacters(strValidChars);
	m_CLengthListCtrl.SetReadOnlyColumns(0);
	m_CLengthListCtrl.EnableVScroll(); 
	m_CLengthListCtrl.InsertColumn(0,"序号",LVCFMT_LEFT,100,100);
	m_CLengthListCtrl.InsertColumn(1,"长度值",LVCFMT_LEFT,285,100);
	//m_tianjia.SetBitmap(LoadBitmap(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDB_BITMAP10)));
	//m_modf.SetBitmap(LoadBitmap(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDB_BITMAP11)));
	//m_ok.SetBitmap(LoadBitmap(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDB_BITMAP9)));
	//m_cancel.SetBitmap(LoadBitmap(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDB_BITMAP12)));
}

BOOL CDanGeLuRuDlg::OnInitDialog() 
{
	CBDialog::OnInitDialog();
	
	SetBitmapStyle(StyleStretch);
	SetBitmap(IDB_BITMAP1);
	//为按钮设置图片和提示框
    m_ok.LoadBitmaps(IDB_OKNORMAL,IDB_OKNORMAL,IDB_OKUP,IDB_PDISABLE);
    m_ok.SetToolTipText("将输入数据保存到系统中");

	m_cancel.LoadBitmaps(IDB_CANCELBWNORMAL,IDB_CANCELBWNORMAL,IDB_CANCELBWUP,IDB_PDISABLE);
    m_cancel.SetToolTipText("不保存输入数据退出");

    m_modf.LoadBitmaps(IDB_MODYNORMAL,IDB_MODYNORMAL,IDB_MODYUP,IDB_PDISABLE);
    m_modf.SetToolTipText("修改列表中的数据");


    m_tianjia.LoadBitmaps(IDB_ADDNORMAL,IDB_ADDNORMAL,IDB_ADDUP,IDB_PDISABLE);
    m_tianjia.SetToolTipText("将输入数据添加到列表中");

    m_butndel.LoadBitmaps(IDB_SPDELNORMAL,IDB_SPDELNORMAL,IDB_SPDELUP,IDB_PDISABLE);
	m_butndel.SetToolTipText("删除选中项");

	m_CSpecifyEdit.SetToolTipText("请注意数据精度,只能保存小数点后四位,多余将被舍去!");

	m_brush.CreateSolidBrush(RGB(126,192,238));
	InitListCtrl();
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
void CDanGeLuRuDlg::OnTianjia() 
{
	// TODO: Add your control notification handler code here

	CString str_Edit,str_Edit1;
	int n;
	m_CSpecifyEdit.GetWindowText(str_Edit);
	
	if(str_Edit=="")
	{
		AfxMessageBox("数据不能为空!请输入!");
		return;
	}
	int sum_Item=m_CLengthListCtrl.GetItemCount();
	//int sum_Itemb=sum_Item+1;
	n=str_Edit.Find(".");
	str_Edit1=str_Edit.Left(n+5);
	char a[10];
	itoa(sum_Item,a,10);
	m_CLengthListCtrl.InsertItem(sum_Item,a);
	m_CLengthListCtrl.SetItemText(sum_Item,1,str_Edit1);
}

void CDanGeLuRuDlg::OnXiugai() 
{
	 //TODO: Add your control notification handler code here
   CString str_Edit;
	
	
    CListCtrl* pListCtrl = (CListCtrl*) GetDlgItem(IDC_LIST_LENGTH);
    ASSERT(pListCtrl != NULL);


   POSITION pos = pListCtrl->GetFirstSelectedItemPosition();
   
   if (pos == NULL)
      TRACE0("No items were selected!\n");
      else
   {
   while (pos)
   {  m_CSpecifyEdit.GetWindowText(str_Edit);
	if(str_Edit=="")
	{
		AfxMessageBox("数据不能为空!请输入!");
		return;
	}
	else
	{int nItem=m_CLengthListCtrl.GetNextSelectedItem(pos);
      m_CLengthListCtrl.SetItemText(nItem,1,str_Edit);
	} 
   }
   }
}

void CDanGeLuRuDlg::OnClickListLength(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	POSITION   pos=m_CLengthListCtrl.GetFirstSelectedItemPosition();
      if(pos)
	  {
          int   nItem=m_CLengthListCtrl.GetNextSelectedItem(pos);
                CString strTemp;
                strTemp.Format("%s",m_CLengthListCtrl.GetItemText(nItem,1));
                m_CSpecifyEdit1=strTemp;
                UpdateData(FALSE); 
	  }
	*pResult = 0;
}

void CDanGeLuRuDlg::OnOK() 
{
// 得到。。。。
	LPCCellArray pCellArray = g_SysApp.GetCellArray();//定义pCellArray
	long count = m_CLengthListCtrl.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_CLengthListCtrl.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();
}

HBRUSH CDanGeLuRuDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CBDialog::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_LEN_STATIC==pWnd->GetDlgCtrlID())
	{
		pDC->SetTextColor(RGB(0,0,255));
		pDC->SetBkMode(TRANSPARENT);
		//return  m_brush;
	}
	if(IDC_EDIT_LENGTH==pWnd->GetDlgCtrlID())
	{
       pDC->SetTextColor(RGB(65,105,225));
	pDC->SetBkColor(RGB(255,250,205));
	return m_editbrush;
	}
	return m_brush;
}

void CDanGeLuRuDlg::OnButtonDel() 
{
	long count;
	char temp[10];
	long num;
	CString str1,str2;
	CListCtrl* pListCtrl = (CListCtrl*) GetDlgItem(IDC_LIST_LENGTH);
    ASSERT(pListCtrl != NULL);
	
	
	POSITION pos = pListCtrl->GetFirstSelectedItemPosition();
	
	if (pos == NULL)
		TRACE0("No items were selected!\n");
	else
	{
		while (pos)
		{ 
			
			int nItem=m_CLengthListCtrl.GetNextSelectedItem(pos);
			m_CLengthListCtrl.DeleteItem(nItem);
			count= m_CLengthListCtrl.GetItemCount();
			for(int i=nItem;i<=count;i++)
			{   
				str1=m_CLengthListCtrl.GetItemText(i,0);
				strcpy(temp,str1);
				num=atol(temp);
				num--;
				str2.Format("%ld",num);
				m_CLengthListCtrl.SetItemText(i,0,str2);
			}
			
		}
	}
          	
}

⌨️ 快捷键说明

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