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

📄 dlgfgw.cpp

📁 一个有VC++开发的计算建筑工程行业软件 可以计算挖孔桩的方量,方格网的计算,支持保存和加载数据
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// 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 + -