📄 dlgfgw.cpp
字号:
// DLGFGW.cpp : implementation file
//
#include "stdafx.h"
#include "TitleBar.h"
#include "DLGFGW.h"
#include "AboutDlg.h"
#include "fgwview.h"
#include <math.h>
#include <fstream.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CString g_strAppPath;
/////////////////////////////////////////////////////////////////////////////
// CDLGFGW dialog
CDLGFGW::CDLGFGW(CWnd* pParent /*=NULL*/)
: CDialog(CDLGFGW::IDD, pParent)
{
//{{AFX_DATA_INIT(CDLGFGW)
m_bgavg = 0.0;
m_bgleftbuttom = 0.0;
m_bglefttop = 0.0;
m_bgrightbuttom = 0.0;
m_bgrighttop = 0.0;
m_autowh = TRUE;
m_autowright = TRUE;
m_jdbg = 0.0;
m_xdbg = 0.0;
m_fgh = 5;
m_fgb = 5;
m_sumtf = 0.0;
m_sumwf = 0.0;
m_ID = 1;
m_sumitems = 0;
m_bgstyle=FALSE; //采用绝对标高
m_countstyle=0; //四棱柱体积法
m_strstyle = _T("四棱柱体积法");
//}}AFX_DATA_INIT
}
DOUBLE CDLGFGW::sumwf=0;
DOUBLE CDLGFGW::sumtf=0;
void CDLGFGW::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDLGFGW)
DDX_Control(pDX, ID_PRINT, m_printtext);
DDX_Control(pDX, IDC_DEMOCOMBO, m_democombo);
DDX_Control(pDX, ID_RECOUNT, m_btnrecount);
DDX_Control(pDX, ID_HELP, m_btnhelp);
DDX_Control(pDX, ID_DELITEM, m_btndelitem);
DDX_Control(pDX, ID_ADDITEM, m_btnadditem);
DDX_Control(pDX, ID_DEMO, m_btndemo);
DDX_Control(pDX, IDC_OPELIST, m_pelist);
DDX_Control(pDX, IDOK, m_btnexit);
DDX_Control(pDX, IDC_BTNNEXT, m_btnnext);
DDX_Control(pDX, IDC_COUNTLIST, m_countlist);
DDX_Text(pDX, IDC_BGAVG, m_bgavg);
DDX_Text(pDX, IDC_BGLEFTBUTTOM, m_bgleftbuttom);
DDX_Text(pDX, IDC_BGLEFTTOP, m_bglefttop);
DDX_Text(pDX, IDC_BGRIGHTBUTTOM, m_bgrightbuttom);
DDX_Text(pDX, IDC_BGRIGHTTOP, m_bgrighttop);
DDX_Check(pDX, IDC_CHECKAUTOH, m_autowh);
DDX_Check(pDX, IDC_CHECKAUTORIGHT, m_autowright);
DDX_Text(pDX, IDC_EDITJDBG, m_jdbg);
DDX_Text(pDX, IDC_EDITXDBG, m_xdbg);
DDX_Text(pDX, IDC_FGH, m_fgh);
DDX_Text(pDX, IDC_FGB, m_fgb);
DDX_Text(pDX, IDC_SUMTF, m_sumtf);
DDX_Text(pDX, IDC_SUMWF, m_sumwf);
DDX_Text(pDX, IDC_FGWID, m_ID);
DDX_Text(pDX, IDC_SUMITEMS, m_sumitems);
DDX_Text(pDX, IDC_COUNTSTYLE, m_strstyle);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDLGFGW, CDialog)
//{{AFX_MSG_MAP(CDLGFGW)
ON_BN_CLICKED(ID_ADDITEM, OnAdditem)
ON_BN_CLICKED(ID_DELITEM, OnDelitem)
ON_BN_CLICKED(ID_RECOUNT, OnRecount)
ON_BN_CLICKED(ID_HELP, OnHelp)
ON_BN_CLICKED(ID_DEMO, OnDemo)
ON_BN_CLICKED(IDC_BTNNEXT, OnBtnnext)
ON_BN_CLICKED(IDC_RADIOJD, OnRadiojd)
ON_BN_CLICKED(IDC_RADIOXD, OnRadioxd)
ON_NOTIFY(NM_CLICK, IDC_OPELIST, OnClickOpelist)
ON_NOTIFY(NM_CLICK, IDC_COUNTLIST, OnClickCountlist)
ON_BN_CLICKED(IDC_COUNT4, OnCount4)
ON_BN_CLICKED(IDC_COUNTNO, OnCountno)
ON_BN_CLICKED(IDC_COUNT3, OnCount3)
ON_BN_CLICKED(ID_PRINT, OnPrint)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDLGFGW message handlers
BOOL CDLGFGW::OnInitDialog()
{
ifstream readset;
CDialog::OnInitDialog();
try{
readset.open("setini",ios::out);
if(!readset)
MessageBox("打开文件setini用于读取新设置的参数值时出错","错误",MB_OK);
else
{
readset>>m_countstyle>>m_jdbg>>m_xdbg;
// 计算类型 绝对标高值 相对标高值
}
readset.close();
}
catch(...)
{MessageBox("没有发现setini文件,当前数据按四棱柱体积法打开","错误");
m_countstyle=0;
m_strstyle=_T("四棱柱体积法");
}
if(m_countstyle==0)
{
OnCount4();
m_strstyle=_T("四棱柱体积法");
}
else
{
OnCountno();
m_strstyle=_T("平均标高体积法");
}
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
m_btnnext.SubclassDlgItem(IDI_EDIT1, this);
m_btnnext.SetIcon(IDI_EDIT2, IDI_EDIT1); // 32x32 图标
m_btnexit.SubclassDlgItem(IDI_EXET1, this);
m_btnexit.SetIcon(IDI_EXIT2, IDI_EXET1); // 32x32 图标
m_btnrecount.SubclassDlgItem(IDI_COUNT1, this);
m_btnrecount.SetIcon(IDI_COUNT2, IDI_COUNT1); // 32x32 图标
m_btnadditem.SubclassDlgItem(IDI_ADD1, this);
m_btnadditem.SetIcon(IDI_ADD2, IDI_ADD1); // 32x32 图标
m_btndelitem.SubclassDlgItem(IDI_DEL1, this);
m_btndelitem.SetIcon(IDI_DEL2, IDI_DEL1); // 32x32 图标
m_btnhelp.SubclassDlgItem(IDI_HELP1, this);
m_btnhelp.SetIcon(IDI_HELP2, IDI_HELP1); // 32x32 图标
m_btndemo.SubclassDlgItem(IDI_SEE1, this);
m_btndemo.SetIcon(IDI_SEE2, IDI_SEE1); // 32x32 图标
m_printtext.SubclassDlgItem(IDI_PRINT1, this);
m_printtext.SetIcon(IDI_PRINT2, IDI_PRINT1); // 32x32 图标
m_pelist.InsertColumn ( 0, "方格号", LVCFMT_CENTER, 60);
m_pelist.InsertColumn ( 1, "方格长度", LVCFMT_LEFT,60);
m_pelist.InsertColumn ( 2, "方格宽度", LVCFMT_LEFT,60);
m_pelist.InsertColumn ( 3, "平基标高", LVCFMT_LEFT, 60);
m_pelist.InsertColumn ( 4, "左上角标高", LVCFMT_LEFT, 60);
m_pelist.InsertColumn ( 5, "右上角标高", LVCFMT_LEFT, 60);
m_pelist.InsertColumn ( 6, "右下角标高", LVCFMT_LEFT,60);
m_pelist.InsertColumn ( 7, "左下角标高", LVCFMT_LEFT,60);
m_pelist.InsertColumn ( 8, "备注", LVCFMT_LEFT, 60);
m_countlist.InsertColumn ( 0, "方格号", LVCFMT_CENTER, 60);
m_countlist.InsertColumn ( 1, "计算方法", LVCFMT_LEFT,60);
m_countlist.InsertColumn ( 2, "挖填方", LVCFMT_LEFT,60);
m_countlist.InsertColumn ( 3, "挖方量", LVCFMT_LEFT, 60);
m_countlist.InsertColumn ( 4, "填方量", LVCFMT_LEFT, 60);
m_countlist.InsertColumn ( 5, "备注", LVCFMT_LEFT, 60);
ImporData(); //从文件中导入数据
OnRecount(); //写入结果数据
m_sumitems=m_pelist.GetItemCount();
m_ID=m_pelist.GetItemCount()+1;
CDLGFGW::UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
//增加一条原始记录数据
void CDLGFGW::OnAdditem()
{
DOUBLE resultwf=0;
DOUBLE resulttf=0;
DOUBLE result=0;
CString str="0";
BG prebg;
CDLGFGW::UpdateData(TRUE);
int n=m_pelist.GetItemCount();
str.Format("%4d",m_ID++);
m_pelist.InsertItem(n,str); //方格号
str.Format("%6.3f",m_fgb);
m_pelist.SetItem(n,1,LVIF_TEXT,str,0,0,0,0); //方格长
str.Format("%6.3f",m_fgh);
m_pelist.SetItem(n,2,LVIF_TEXT,str,0,0,0,0); //方格宽
str.Format("%6.3f",m_bgavg);
m_pelist.SetItem(n,3,LVIF_TEXT,str,0,0,0,0); //平基标高
str.Format("%6.3f",m_bglefttop);
m_pelist.SetItem(n,4,LVIF_TEXT,str,0,0,0,0); //方格左上角标高
str.Format("%6.3f",m_bgrighttop);
m_pelist.SetItem(n,5,LVIF_TEXT,str,0,0,0,0); //方格右上角标高
str.Format("%6.3f",m_bgrightbuttom);
m_pelist.SetItem(n,6,LVIF_TEXT,str,0,0,0,0); //方格右下角标高
str.Format("%6.3f",m_bgleftbuttom);
m_pelist.SetItem(n,7,LVIF_TEXT,str,0,0,0,0); //方格左下角标高
int i=m_democombo.GetCurSel();
switch(i)
{
case 0:
str="备注"; break;
case 1:
str="土"; break;
case 2:
str="松次坚石"; break;
case 3:
str="普坚石"; break;
case 4:
str="孤石"; break;
case 5:
str="其它"; break;
default:
str="备注"; break;
}//end switch
m_pelist.SetItem(n,8,LVIF_TEXT,str,0,0,0,0); //备注内容
prebg.b=m_fgb;
prebg.h=m_fgh;
prebg.bg0=m_bgavg;
prebg.lefttop=m_bglefttop;
prebg.righttop=m_bgrighttop;
prebg.rightbuttom=m_bgrightbuttom;
prebg.leftbuttom=m_bgleftbuttom;
INT styleid=GetCountStyle(prebg);
if(m_countstyle==0) //四棱柱法
{
resultwf=CountValue(prebg);
resulttf=CountValueTF(prebg);
}
else
{ result=CountValueAVE(prebg); //平均标高法
if(result>=0) {resultwf=result; resulttf=0; }
else {resulttf=result; resultwf=0; }
}
str.Format("%4d",m_ID-1);
m_countlist.InsertItem(n,str); //方格号
if(styleid==0) str="四挖";
else if(styleid==1) str="三挖一填";
else if(styleid==2) str="两挖两填(边)";
else if(styleid==3) str="两挖两填(角)";
else if(styleid==4) str="三填一挖";
else if(styleid==5) str="四填";
else if(styleid==-1) str="未知";
m_countlist.SetItem(n,1,LVIF_TEXT,str,0,0,0,0); //计算方法
if(resultwf>0 && resulttf==0)
{
str="挖方";
sumwf=sumwf+resultwf;
m_sumwf=sumwf;
}
else if(resultwf==0 && resulttf<0)
{
str="填方";
sumtf=sumtf+resulttf;
m_sumtf=sumtf;
}
else if(resultwf>0 && resulttf<0)
{
str="挖填方";
sumtf=sumtf+resulttf;
sumwf=sumwf+resultwf;
m_sumtf=sumtf;
m_sumwf=sumwf;
}
else
{
str="无挖填";
}
m_countlist.SetItem(n,2,LVIF_TEXT,str,0,0,0,0); //挖填方字符串
str.Format("%6.2f",resultwf);
m_countlist.SetItem(n,3,LVIF_TEXT,str,0,0,0,0); //挖方量
str.Format("%6.2f",resulttf);
m_countlist.SetItem(n,4,LVIF_TEXT,str,0,0,0,0); //填方量
str="已计算";
m_countlist.SetItem(n,5,LVIF_TEXT,str,0,0,0,0); //备注
m_sumitems=m_sumitems+1;
//在这里加入排序代码
if(m_autowh) //自动填平基标高
{
if(!m_bgstyle)
m_bgavg=m_jdbg; //绝对标高 m_bgavg=m_xdbg; //相对标高
else
m_bgavg=m_xdbg;
}
else
{
m_bgavg=0;
}
if(m_autowright) //自动将上一方格的右上和右下角点标高填入为下一角点的左上和左一角点坐标
{
m_bglefttop=m_bgrighttop;
m_bgleftbuttom=m_bgrightbuttom;
m_bgrighttop=0;
m_bgrightbuttom=0;
}
else
{
m_bglefttop=0;
m_bgleftbuttom=0;
m_bgrighttop=0;
m_bgrightbuttom=0;
}
CDLGFGW::UpdateData(FALSE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -