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

📄 titlebardlg.cpp

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

		CRect rtWnd, rtTitle, rtButtons;
		GetWindowRect(&rtWnd); 
		//取得标题栏的位置
		rtTitle.left = GetSystemMetrics(SM_CXFRAME);
		rtTitle.top = GetSystemMetrics(SM_CYFRAME);
		rtTitle.right = rtWnd.right - rtWnd.left - GetSystemMetrics(SM_CXFRAME);
		rtTitle.bottom = rtTitle.top + GetSystemMetrics(SM_CYSIZE);

		CPoint point;
		//填充顶部框架
		point.x = rtWnd.Width();
		point.y = GetSystemMetrics(SM_CYSIZE) + GetSystemMetrics(SM_CYFRAME)+20;
		pDC->PatBlt(0, 0, point.x, point.y, PATCOPY);
		//填充左侧框架
		point.x = GetSystemMetrics(SM_CXFRAME) + 1;
		point.y = rtWnd.Height();
		pDC->PatBlt(0, 0, point.x, point.y, PATCOPY);
		//填充底部框架
		point.x = rtWnd.Width(); 
		point.y = GetSystemMetrics(SM_CYFRAME) + 1;
		pDC->PatBlt(0, rtWnd.Height()-point.y, point.x, point.y, PATCOPY);
		//填充右侧框架
		point.x = GetSystemMetrics(SM_CXFRAME) + 1;
		point.y = rtWnd.Height();
		pDC->PatBlt(rtWnd.Width()-point.x, 0, point.x, point.y, PATCOPY);

		//绘制美化线条
		CBrush BrushLine(RGB(255, 255, 255));
		pDC->SelectObject(&BrushLine);
		point.x = rtWnd.Width() - 150;
		point.y = GetSystemMetrics(SM_CYFRAME) + 2;
		pDC->PatBlt(GetSystemMetrics(SM_CXFRAME), point.y, point.x, 1, PATCOPY);
		point.y += 5;
		pDC->PatBlt(GetSystemMetrics(SM_CXFRAME), point.y, point.x, 1, PATCOPY);
		point.y += 5;
		pDC->PatBlt(GetSystemMetrics(SM_CXFRAME), point.y, point.x, 1, PATCOPY);
		point.x += 60;
		point.y += 12;
		pDC->PatBlt(point.x, point.y, 85, 1, PATCOPY);
		point.y += 5;
		pDC->PatBlt(point.x, point.y, 85, 1, PATCOPY);
		point.x -= 60 - GetSystemMetrics(SM_CXFRAME);
		point.y += 5;
		pDC->PatBlt(point.x, point.y, 145-GetSystemMetrics(SM_CXFRAME) , 1, PATCOPY);
		point.y -= 32;
		pDC->PatBlt(point.x, point.y, 1 , 32, PATCOPY);
		
		pDC->SelectObject(pOldBrush);

		//重画图标
		m_rtIcon.left = rtWnd.Width() - 135;
		m_rtIcon.top = GetSystemMetrics(SM_CYFRAME);
		m_rtIcon.right = m_rtIcon.left + 32;
		m_rtIcon.bottom = m_rtIcon.top + 32;
		::DrawIconEx(pDC->m_hDC, m_rtIcon.left, m_rtIcon.top, m_hIcon, 
			m_rtIcon.Width(), m_rtIcon.Height(), 0, NULL, DI_NORMAL);
		m_rtIcon.OffsetRect(rtWnd.TopLeft()); 


		//准备画XP风格按钮
		CBitmap* pBitmap = new CBitmap;
		CBitmap* pOldBitmap;
		CDC* pDisplayMemDC=new CDC;
		pDisplayMemDC->CreateCompatibleDC(pDC);

		//重画关闭button
		rtButtons.left = rtTitle.right - 19;
		rtButtons.top = rtTitle.top;
		rtButtons.right = rtButtons.left + 19;
		rtButtons.bottom = rtButtons.top + 19;
		pBitmap->LoadBitmap(IDB_EXIT_NORMAL);
		pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
		pDC->BitBlt(rtButtons.left, rtButtons.top, rtButtons.Width(), rtButtons.Height(), pDisplayMemDC, 0, 0, SRCCOPY);
		pDisplayMemDC->SelectObject(pOldBitmap);
		m_rtButtExit = rtButtons;
		m_rtButtExit.OffsetRect(rtWnd.TopLeft()); 
		pBitmap->DeleteObject();

		//重画最大化/恢复button
		rtButtons.right = rtButtons.left - 3;
		rtButtons.left = rtButtons.right - 19;
		if (IsZoomed())
			pBitmap->LoadBitmap(IDB_RESTORE_NORMAL);
		else
			pBitmap->LoadBitmap(IDB_MAX_NORMAL);
		pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
		pDC->BitBlt(rtButtons.left, rtButtons.top, rtButtons.Width(), rtButtons.Height(), pDisplayMemDC, 0, 0, SRCCOPY);
		pDisplayMemDC->SelectObject(pOldBitmap);
		m_rtButtMax = rtButtons;
		m_rtButtMax.OffsetRect(rtWnd.TopLeft());
		pBitmap->DeleteObject();

		//重画最小化button
		rtButtons.right = rtButtons.left - 3;
		rtButtons.left = rtButtons.right - 19;
		pBitmap->LoadBitmap(IDB_MIN_NORMAL);
		pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
		pDC->BitBlt(rtButtons.left, rtButtons.top, rtButtons.Width(), rtButtons.Height(), pDisplayMemDC, 0, 0, SRCCOPY);
		pDisplayMemDC->SelectObject(pOldBitmap);
		m_rtButtMin = rtButtons;
		m_rtButtMin.OffsetRect(rtWnd.TopLeft());
		pBitmap->DeleteObject();
	
		//重画帮助button
		rtButtons.right = rtButtons.left - 3;
		rtButtons.left = rtButtons.right - 19;
		pBitmap->LoadBitmap(IDB_HELP_NORMAL);
		pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
		pDC->BitBlt(rtButtons.left, rtButtons.top, rtButtons.Width(), rtButtons.Height(), pDisplayMemDC, 0, 0, SRCCOPY);
		pDisplayMemDC->SelectObject(pOldBitmap);
		m_rtButtHelp = rtButtons;
		m_rtButtHelp.OffsetRect(rtWnd.TopLeft());
		pBitmap->DeleteObject();
		
		//重画caption
		int nOldMode = pDC->SetBkMode(TRANSPARENT);
		COLORREF clOldText=pDC->SetTextColor(RGB(255, 255, 255));
		pDC->SelectStockObject(SYSTEM_FIXED_FONT);
		rtTitle.left += 2;
		rtTitle.top += GetSystemMetrics(SM_CYSIZE);
		rtTitle.bottom = rtTitle.top + 30;
		CString m_strTitle;
		GetWindowText(m_strTitle);
		pDC->DrawText(m_strTitle, &rtTitle, DT_LEFT);
		pDC->SetBkMode(nOldMode);
		pDC->SetTextColor(clOldText);

		ReleaseDC(pDisplayMemDC);
		delete pDisplayMemDC;
		delete pBitmap;
	}
}
//打开再设置参数对话框
void CTitleBarDlg::OnBtnReSetcs() 
{
   CSetCSDlg setdlg1;
   if(setdlg1.DoModal()==MB_OK)
   {InitCS();
    CTitleBarDlg::OnBtnCount();
   }

}
//打开关于对话框
void CTitleBarDlg::OnButtonHelp() 
{
	CAboutDlg aboutdlg;
	aboutdlg.DoModal(); 
}
//保存到文件或从文件中导入工程参数或工程量结构:文件名:rhdata.txt
void CTitleBarDlg::Serialize(CArchive& ar) 
{
	if (ar.IsStoring())
	{	// storing code
	}
	else
	{	// loading code
	}
}
//增加一条记录
void CTitleBarDlg::OnBtnAdddata() 
{  CString str="0";
   GCDATA  PreGcData;
   COUNTDATA PreCountData;
   CRhCount PreCount;
	
	CTitleBarDlg::UpdateData(TRUE); 
//	GCDATA AddData; 
	int i;

	if(m_lhcombo.GetCurSel()<0 || m_zdhcombo.GetCurSel()<0)
	{
		MessageBox("你必须选择楼号及桩代号内容.","输入原始数据不全错误");
    	return;
	}
 // m_lhcombo.GetLBText(m_lhcombo.GetCurSel(),PreLh); 
   i=m_lhcombo.GetCurSel(); 
	switch(i)
	{
	case 0:
		{PreLh=_T("1号楼");  break;}
	case 1:
		{PreLh=_T("2号楼");  break;}
	case 2:
		{PreLh=_T("3号楼");  break;}
	case 3:
		{PreLh=_T("4号楼");  break;}
	case 4:
		{PreLh=_T("5号楼");  break;}
	case 5:
		{PreLh=_T("6号楼");  break;}
	case 6:
		{PreLh=_T("7号楼");  break;}
	case 7:
		{PreLh=_T("车库");  break;}
    default:
		{PreLh=""; break;}
	}
  
  i=m_zdhcombo.GetCurSel();
  switch(i)
  {
  case 0:
	  {PreZdh="YKZ_1"; break;}
  case 1:
	  {PreZdh="YKZ_2"; break;}
  case 2:
	  {PreZdh="YKZ_3"; break;}
  case 3:
	  {PreZdh="YKZ_4"; break;}
  case 4:
	  {PreZdh="YKZ_5"; break;}
  case 5:
	  {PreZdh="YKZ_7"; break;}
  case 6:
	  {PreZdh="YKZ_10"; break;}
  case 7:
	  {PreZdh="YKZ_11"; break;}
  default:
	  {PreZdh=""; break;}
  }
  int n=m_opedataList.GetItemCount();

  m_opedataList.InsertItem(n,PreLh);   //楼号
  m_opedataList.SetItem(n,1,LVIF_TEXT,m_wzstr,0,0,0,0); //桩位置 
  m_opedataList.SetItem(n,2,LVIF_TEXT,PreZdh,0,0,0,0); //桩代号
 
  str.Format("%6.3f",m_h0);
  m_opedataList.SetItem(n,3,LVIF_TEXT,str,0,0,0,0);   //自然标高

  str.Format("%6.3f",m_ztop); 
  m_opedataList.SetItem(n,4,LVIF_TEXT,str,0,0,0,0);   //桩顶标高

  str.Format("%6.3f",m_zbuttom); 
  m_opedataList.SetItem(n,5,LVIF_TEXT,str,0,0,0,0);   //桩底标高

  str.Format("%6.3f",m_th); 
  m_opedataList.SetItem(n,6,LVIF_TEXT,str,0,0,0,0);   //土厚

  str.Format("%6.3f",m_ssh); 
  m_opedataList.SetItem(n,7,LVIF_TEXT,str,0,0,0,0);   //松石厚

  str.Format("%6.3f",m_psh); 
  m_opedataList.SetItem(n,8,LVIF_TEXT,str,0,0,0,0);   //普石厚

  str.Format("%6.3f",m_zhbh); 
  m_opedataList.SetItem(n,9,LVIF_TEXT,str,0,0,0,0);   //砖护壁厚

  str.Format("%6.3f",m_thbh); 
  m_opedataList.SetItem(n,10,LVIF_TEXT,str,0,0,0,0);   //砼护壁厚

  m_opedataList.SetItem(n,11,LVIF_TEXT,m_demo,0,0,0,0);  //备注


  //以下同时在结果栏中生成一空行
//初始化数据
   PreGcData.strlh=PreLh; //楼号
   PreGcData.strzwz=m_wzstr; //桩位置
   PreGcData.strzdh=PreZdh;  //桩代号
   PreGcData.h0=m_h0;//自然标高
   PreGcData.ztop=m_ztop;   //桩顶标高
   PreGcData.zbuttom=m_zbuttom;  //桩底标高
   PreGcData.th=m_th;  //土层深
   PreGcData.ssh=m_ssh;    //松次坚石深
   PreGcData.psh=m_psh;  //普坚石深
   PreGcData.zhb =m_zhbh;    //砖护壁高
   PreGcData.thb=m_thbh;  //砼护壁高
   PreGcData.strdemo=m_demo;  //备注
   PreCount.InitData(PreGcData); 

    //PreCount.SetDefaultCS();    //暂用
      InitCS();
      PreCount.InitCS(PreCS); 
	  PreCountData=PreCount.GetItemCountResualt();

	  n=m_countdataList.GetItemCount();
	  m_countdataList.InsertItem(n,PreLh);   //楼号
	  m_countdataList.SetItem(n,1,LVIF_TEXT,m_wzstr,0,0,0,0); //桩位置 
	  m_countdataList.SetItem(n,2,LVIF_TEXT,PreZdh,0,0,0,0); //桩代号

      str.Format("%6.3f",PreCountData.sumzhb); 
      m_countdataList.SetItem(n,3,LVIF_TEXT,str,0,0,0,0);   //砖护壁方量

      str.Format("%6.3f",PreCountData.sumthb); 
      m_countdataList.SetItem(n,4,LVIF_TEXT,str,0,0,0,0);   //砼护壁方量

      str.Format("%6.3f",PreCountData.sumtV); 
      m_countdataList.SetItem(n,5,LVIF_TEXT,str,0,0,0,0);   //土方量

      str.Format("%6.3f",PreCountData.sumssV); 
      m_countdataList.SetItem(n,6,LVIF_TEXT,str,0,0,0,0);   //松石方量

      str.Format("%6.3f",PreCountData.sumpsV); 
      m_countdataList.SetItem(n,7,LVIF_TEXT,str,0,0,0,0);   //普石方量

       str.Format("%6.3f",PreCountData.sumzstV); 
       m_countdataList.SetItem(n,8,LVIF_TEXT,str,0,0,0,0);   //桩身砼方量

       str.Format("%6.3f",PreCountData.sumgjweight);       //钢筋方量
      m_countdataList.SetItem(n,9,LVIF_TEXT,str,0,0,0,0);   //桩身砼方量

      str="已计算";
      m_countdataList.SetItem(n,10,LVIF_TEXT,str,0,0,0,0);   //备注

   CTitleBarDlg::UpdateData(FALSE); 
   CountAllSum();
   //OnSave();

}
//删除记录
void CTitleBarDlg::OnBtnDeldata() 
{
	int PreSelIndex;
  int n=m_opedataList.GetItemCount();
  if(n==0)
	  return;
  else if(m_opedataList.GetSelectedCount()==0 && m_countdataList.GetSelectedCount()==0)  //两个列表框中均无被选择的列表项
  {
	      MessageBox("请再两个列表中的任何一个选择要删除的记录","警告");
          return;
  }
  else if(m_countdataList.GetSelectedCount()==0)
     PreSelIndex=m_opedataList.GetSelectionMark(); 
  else if(m_opedataList.GetSelectedCount()==0)
     PreSelIndex=m_countdataList.GetSelectionMark(); 
  m_opedataList.DeleteItem(PreSelIndex); 
  m_countdataList.DeleteItem(PreSelIndex); 
  CountAllSum();
  OnSave();
}

//计算
void CTitleBarDlg::OnBtnCount() 
{

⌨️ 快捷键说明

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