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 + -
显示快捷键?