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

📄 dlgfgw.cpp

📁 一个有VC++开发的计算建筑工程行业软件 可以计算挖孔桩的方量,方格网的计算,支持保存和加载数据
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	if(MessageBox("你是否保存已经变化的数据?","保存",MB_OKCANCEL)==IDOK)
	{
		SaveData();    //保存数据内容
		writedata.open("setini",ios::out);
		if(!writedata)
			MessageBox("打开文件setini用于保存新设置的参数值时出错","错误",MB_OK);
		else 
		{  
			writedata<<m_countstyle<<"  "<<m_jdbg<<"  "<<m_xdbg<<"\n";
		}
        writedata.close(); 
		
	} //end if
	CDialog::OnOK();
}
//打开[关于]对话框
void CDLGFGW::OnHelp() 
{
   CAboutDlg dlg;
   dlg.DoModal(); 
}

void CDLGFGW::OnDemo() 
{
	CFgwView dlg;
	dlg.DoModal(); 
}

//修改当前记录
void CDLGFGW::OnBtnnext() 
{
	CString str="";
    INT PreSelItem=m_countlist.GetSelectionMark();
	//if(m_pelist.GetItemState(PreSelItem,LVIF_STATE)==LVIS_SELECTED)
//		 AfxMessageBox("有选中项");
	if(PreSelItem>=0)
	{			 CDLGFGW::UpdateData(TRUE); 
		         str.Format("%4d",m_ID); 
				  m_pelist.SetItem(PreSelItem,0,LVIF_TEXT,str,0,0,0,0);   //方格号

				  str.Format("%6.3f",m_fgb); 
				  m_pelist.SetItem(PreSelItem,1,LVIF_TEXT,str,0,0,0,0); //方格长
				  
				  str.Format("%6.3f",m_fgh); 
				  m_pelist.SetItem(PreSelItem,2,LVIF_TEXT,str,0,0,0,0); //方格宽
				  str.Format("%6.3f",m_bgavg); 
				  m_pelist.SetItem(PreSelItem,3,LVIF_TEXT,str,0,0,0,0); //平基标高
				  str.Format("%6.3f",m_bglefttop); 
				  m_pelist.SetItem(PreSelItem,4,LVIF_TEXT,str,0,0,0,0); //方格左上角标高
				  str.Format("%6.3f",m_bgrighttop); 
				  m_pelist.SetItem(PreSelItem,5,LVIF_TEXT,str,0,0,0,0); //方格右上角标高
				  str.Format("%6.3f",m_bgrightbuttom); 
				  m_pelist.SetItem(PreSelItem,6,LVIF_TEXT,str,0,0,0,0); //方格右下角标高
				  str.Format("%6.3f",m_bgleftbuttom); 
				  m_pelist.SetItem(PreSelItem,7,LVIF_TEXT,str,0,0,0,0); //方格左下角标高
				  str="已被修改"; 
	        	  m_pelist.SetItem(PreSelItem,8,LVIF_TEXT,str,0,0,0,0); //备注
		  
		          OnRecount();

	}//end if
	CDLGFGW::UpdateData(FALSE); 
 
}
//单击选项按纽时发生
void CDLGFGW::OnRadiojd() 
{
  		m_bgstyle=FALSE;
//		m_jdbg=325.168;    //建议此行从setini中读出
//	    m_xdbg=0.0;
		m_bgavg=m_jdbg;
		CDLGFGW::UpdateData(FALSE); 
		
}

void CDLGFGW::OnRadioxd() 
{
  		m_bgstyle=TRUE;
//	    m_xdbg=0.0;     //建议此行从setini中读出
//		m_jdbg=0.0;
		m_bgavg=m_xdbg;
		CDLGFGW::UpdateData(FALSE); 
}

void CDLGFGW::OnClickOpelist(NMHDR* pNMHDR, LRESULT* pResult) 
{
    CString str="";
	int PreSelItem=-1;;
	PreSelItem=m_pelist.GetSelectionMark();
	m_countlist.SetSelectionMark(PreSelItem);
	m_countlist.SetItemState(PreSelItem,LVIS_SELECTED,LVIS_SELECTED); 
    if(PreSelItem!=-1)
	{
        m_ID=atoi(m_pelist.GetItemText(PreSelItem,0));
	    m_fgb=atof(m_pelist.GetItemText(PreSelItem,1));
	    m_fgh=atof(m_pelist.GetItemText(PreSelItem,2));
	    m_bgavg=atof(m_pelist.GetItemText(PreSelItem,3));
	    m_bglefttop=atof(m_pelist.GetItemText(PreSelItem,4));
	    m_bgrighttop=atof(m_pelist.GetItemText(PreSelItem,5));
	    m_bgrightbuttom=atof(m_pelist.GetItemText(PreSelItem,6));
	    m_bgleftbuttom=atof(m_pelist.GetItemText(PreSelItem,7));
        CDLGFGW::UpdateData(FALSE); 
	}

	*pResult = 0;

}

void CDLGFGW::OnClickCountlist(NMHDR* pNMHDR, LRESULT* pResult) 
{
	int PreSelItem=-1;;
	PreSelItem=m_countlist.GetSelectionMark();
	m_pelist.SetSelectionMark(PreSelItem);
	m_pelist.SetItemState(PreSelItem,LVIS_SELECTED,LVIS_SELECTED); 
   if(PreSelItem!=-1)
	{
        m_ID=atoi(m_pelist.GetItemText(PreSelItem,0));
	    m_fgb=atof(m_pelist.GetItemText(PreSelItem,1));
	    m_fgh=atof(m_pelist.GetItemText(PreSelItem,2));
	    m_bgavg=atof(m_pelist.GetItemText(PreSelItem,3));
	    m_bglefttop=atof(m_pelist.GetItemText(PreSelItem,4));
	    m_bgrighttop=atof(m_pelist.GetItemText(PreSelItem,5));
	    m_bgrightbuttom=atof(m_pelist.GetItemText(PreSelItem,6));
	    m_bgleftbuttom=atof(m_pelist.GetItemText(PreSelItem,7));
        CDLGFGW::UpdateData(FALSE); 
	}

	*pResult = 0;
}
//四棱柱体积法
void CDLGFGW::OnCount4() 
{
	m_countstyle=0;
	m_strstyle=_T("四棱柱体积法");
	CDLGFGW::UpdateData(FALSE); 
}
//平均体积法
void CDLGFGW::OnCountno() 
{
	MessageBox("    你选用的是[平均标高体积法]来计算方格网的挖填方量,这种方法对于全挖或全填时计算同实际基本相符,但若一个方格有挖有填时,选用这种方法计算是不能准确的反映实际情况,它只简单的求出平均标高来确定是挖或是填中的一种而忽略另一种。","重要提示");
	m_countstyle=1;
	m_strstyle=_T("平均标高体积法");
	CDLGFGW::UpdateData(FALSE); 	
}
//三角棱柱体积法
void CDLGFGW::OnCount3() 
{
	MessageBox("    [三角棱柱体积法]计算方格网挖填方量对于有等高线情况下计算的精度高过四棱柱法,本软件目前暂不支持[三角棱柱体积法]来计算方格网挖填方量,建议使用四棱柱体积法。","提示",MB_OK);
	m_countstyle=0;
    OnCount4();
	
}

//仅计算填方
DOUBLE CDLGFGW::CountValueTF(BG Prebg)
{
	DOUBLE V=0;
	CString str="";
    int style=0;
	DOUBLE id1=Prebg.lefttop-Prebg.bg0 ;
	DOUBLE id2=Prebg.righttop-Prebg.bg0 ;
	DOUBLE id3=Prebg.rightbuttom-Prebg.bg0;
	DOUBLE id4=Prebg.leftbuttom-Prebg.bg0 ;
	if(fabs(id1)+fabs(id2)+fabs(id3)+fabs(id4)<0.0001)  return 0;
   if(m_countstyle==0)   //四棱柱体积法
   {
	   style=GetCountStyle(Prebg);
       switch(style)
	   {
	   case 0:  //四挖
           V=0;  
		   break;
	   case 1:  //三挖一填
           {
			   if(id1<0) V=(Prebg.b*Prebg.h/4)*(id1)*(id1)/(fabs(id1)+id2+id3+id4);
			   else if(id2<0) V=(Prebg.b*Prebg.h/4)*(id2)*(id2)/(id1+fabs(id2)+id3+id4);
			   else if(id3<0) V=(Prebg.b*Prebg.h/4)*(id3)*(id3)/(id1+id2+fabs(id3)+id4);
			   else if(id4<0) V=(Prebg.b*Prebg.h/4)*(id4)*(id4)/(id1+id2+id3+fabs(id4));
               V=-1*fabs(V);
			    break;
		   }
	   case 2:  //两挖两填(边)
		   if(id1<0 && id2<0) V=(Prebg.b*Prebg.h/4)*(id1+id2)*(id1+id2)/(fabs(id1+id2)+id3+id4);
           else if(id1<0 && id3<0) V=(Prebg.b*Prebg.h/4)*(id1+id3)*(id1+id3)/(fabs(id1+id3)+id4+id2);
           else if(id1<0 && id4<0) V=(Prebg.b*Prebg.h/4)*(id1+id4)*(id1+id4)/(fabs(id1+id4)+id2+id3);
           else if(id2<0 && id3<0) V=(Prebg.b*Prebg.h/4)*(id2+id3)*(id2+id3)/(id1+id4+fabs(id2+id3));
           else if(id2<0 && id4<0) V=(Prebg.b*Prebg.h/4)*(id2+id4)*(id2+id4)/(id1+id3+fabs(id4+id2));
           else if(id3<0 && id4<0) V=(Prebg.b*Prebg.h/4)*(id3+id4)*(id3+id4)/(id1+id2+fabs(id3+id4));
		   V=-1*fabs(V);
		   break;
	   case 3:  //两挖两填(角)
		   if(id1<0 && id2<0) V=(Prebg.b*Prebg.h/4)*(id1+id2)*(id1+id2)/(fabs(id1+id2)+id3+id4);
           else if(id1<0 && id3<0) V=(Prebg.b*Prebg.h/4)*(id1+id3)*(id1+id3)/(fabs(id1+id2)+id3+id4);
           else if(id1<0 && id4<0) V=(Prebg.b*Prebg.h/4)*(id1+id4)*(id1+id4)/(fabs(id1+id4)+id2+id3);
           else if(id2<0 && id3<0) V=(Prebg.b*Prebg.h/4)*(id2+id3)*(id2+id3)/(id1+fabs(id2+id3)+id4);
           else if(id2<0 && id4<0) V=(Prebg.b*Prebg.h/4)*(id2+id4)*(id2+id4)/(id1+id3+fabs(id2+id4));
           else if(id3<0 && id4<0) V=(Prebg.b*Prebg.h/4)*(id3+id4)*(id3+id4)/(id1+id2+fabs(id3+id4));
		   V=-1*fabs(V);
		   break;
	   case 4: //三填一挖
		   if(id1>0) V=(Prebg.b*Prebg.h/4)*(id2+id3+id4)*(id2+id3+id4)/(id1+fabs(id2+id3+id4));
			 else if(id2>0) V=(Prebg.b*Prebg.h/4)*(id1+id3+id4)*(id1+id3+id4)/(fabs(id1+id3+id4)+id2);
			 else if(id3>0) V=(Prebg.b*Prebg.h/4)*(id1+id2+id4)*(id1+id2+id4)/(fabs(id1+id2+id4)+id3);
			 else if(id4>0) V=(Prebg.b*Prebg.h/4)*(id1+id2+id3)*(id1+id2+id3)/(fabs(id1+id2+id3)+id4);
             V=-1*fabs(V);
		   break;
	   case 5:  //四填
			V=((Prebg.lefttop+Prebg.righttop+Prebg.rightbuttom+Prebg.leftbuttom)/4-Prebg.bg0)*Prebg.b*Prebg.h;  
			V=-1*fabs(V);
		   break;
	   case 6:  //未知计算方法
			V=((Prebg.lefttop+Prebg.righttop+Prebg.rightbuttom+Prebg.leftbuttom)/4-Prebg.bg0)*Prebg.b*Prebg.h;  
			V=-1*fabs(V);
		   break;
	   default:
		   break;

	   }//end switch

   }//end if(countstyle==0)
  
    str.Format("%9.3f",V);
	V=atof(str);
	return V;

}
//平均标高法计算方量:  返回正为挖方,返回负为填方
DOUBLE CDLGFGW::CountValueAVE(BG Prebg)
{
	DOUBLE V=0;
	if(m_countstyle==1)        //平均标高法
   {
	   V=((Prebg.lefttop+Prebg.righttop+Prebg.rightbuttom+Prebg.leftbuttom)/4-Prebg.bg0)*Prebg.b*Prebg.h;  
    }
   return V;
}
//将列表框中内容写入一文本文件printtext中并打开
void CDLGFGW::OnPrint() 
{
	INT id=0;
	DOUBLE value=0;
	ofstream writedata;
	CString str[11];
   //退出时保存各值
CString Prev=_T("");
int n=m_pelist.GetItemCount();
///if(n==0)
//if(n==0) return;
try
{
	writedata.open("printtext.txt",ios::out);
	if(!writedata)
		MessageBox("打开文件printtext用于保存新设置的参数值时出错","错误",MB_OK);
	else 
	{   if(m_countstyle==0)
	{
		writedata<<"         ****************************************************************"<<"\n";
		writedata<<"         *                                                              *"<<"\n";
		writedata<<"         *                本方格网采用四棱柱体积法计算:                 *"<<"\n";
		writedata<<"         *                                                              *"<<"\n";
		writedata<<"         ****************************************************************"<<"\n";
 		writedata<<"\n\n";        

		str[10]="四棱柱体积法"; 
	}

        else 
		{

		writedata<<"         ****************************************************************"<<"\n";
		writedata<<"         *                                                              *"<<"\n";
		writedata<<"         *                本方格网采用平均标高体积法计算:               *"<<"\n";
		writedata<<"         *                                                              *"<<"\n";
		writedata<<"         ****************************************************************"<<"\n";
 		writedata<<"\n\n";        

		// str[10]="平均标高体积法"; 
		}
		writedata<<"---------------------------------------------------------------------------------------------------"<<"\n";
		writedata<<"方格号 方格长 方格宽  平基标高               方格四角标高               挖方量   填方量    说明"<<"\n";
		writedata<<"----------------------------------------------------------------------------------------------------"<<"\n";
		for( int i=0;i<n;i++)
		{
			id=atoi(m_pelist.GetItemText(i,0));
			str[0].Format("%4d",id);
			value=atof(m_pelist.GetItemText(i,1));
            str[1].Format("%4.1f",value); 
			value=atof(m_pelist.GetItemText(i,2));
			str[2].Format("%4.1f",value); 

			value=atof(m_pelist.GetItemText(i,3));			
			str[3].Format("%7.2f",value); 
			value=atof(m_pelist.GetItemText(i,4));	
			str[4].Format("%7.2f",value); 
			value=atof(m_pelist.GetItemText(i,5));	
			str[5].Format("%7.2f",value); 
			value=atof(m_pelist.GetItemText(i,6));	
			str[6].Format("%7.2f",value); 
			value=atof(m_pelist.GetItemText(i,7));	
			str[7].Format("%7.2f",value); 

			value=atof(m_countlist.GetItemText(i,3));	
			str[8].Format("%7.2f",value); 
			value=atof(m_countlist.GetItemText(i,4));	
			str[9].Format("%7.2f",value);
			
			str[10]=m_countlist.GetItemText(i,2);
				
			writedata<<str[0]<<"   ";
			writedata<<str[1]<<"   "<<str[2]<<"   ";
			writedata<<str[3]<<"   "<<str[4]<<"   ";
			writedata<<str[5]<<"   "<<str[6]<<"   ";
            writedata<<str[7]<<"   ";
		    writedata<<str[8]<<"  "<<str[9]<<"   "<<str[10];
		    writedata<<"\n";
		}//end for
		writedata<<"****************************************************************************************************"<<"\n";
//		writedata<<"方格号 方格长 方格宽  平基标高               方格四角标高                挖方量  填方量      说明"<<"\n";
		writedata<<"\n\n";
		writedata<<"合计: 总方格数                                                      总挖方量   总填方量          "<<"\n\n";
        writedata<<"         "<<n<<"                                                           "<<m_sumwf<<"    "<<m_sumtf<<"\n\n\n";
		writedata<<"\n\n"; 
		writedata<<"                                               版权所有   重庆第九建设有限公司   "<<"\n";

		}
		writedata.close(); 

        CString strsave(g_strAppPath+_T("printtext.txt"));
		ShellExecute(NULL,NULL,strsave,NULL,_T("D:\\RHWKZ"),SW_SHOW);
	}
	catch(...)
	{
		MessageBox("打开文件printtext用于保存新设置的参数值时出错","错误",MB_OK);
	}

}

⌨️ 快捷键说明

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