📄 titlebardlg.cpp
字号:
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 + -