From 46a8b0d665274b3aa7deadcecc8ccffcdbfd1de0 Mon Sep 17 00:00:00 2001 From: mingMichelle <982903111@qq.com> Date: Fri, 26 Apr 2019 22:19:19 +0800 Subject: [PATCH] modify --- Modify_Part3-ch09/SectionCalculation.exe | Bin 0 -> 104448 bytes .../.vs/SectionCalculation/v14/.suo | Bin 0 -> 128000 bytes .../Debug/SectionCalculation.exe | Bin 0 -> 303616 bytes .../SectionCalculation/SectionCalculation.sln | 28 + .../SectionCalculation/BasicCalc.cpp | 81 ++ .../SectionCalculation/BasicCalc.h | 39 + .../SectionCalculation/DrawDlg.cpp | 95 +++ .../SectionCalculation/DrawDlg.h | 29 + .../SectionCalculation/DxfFile.cpp | 104 +++ .../SectionCalculation/DxfFile.h | 39 + .../SectionCalculation/FileOperation.cpp | 145 ++++ .../SectionCalculation/FileOperation.h | 48 ++ .../SectionCalculation/HorizonSectionCalc.cpp | 144 ++++ .../SectionCalculation/HorizonSectionCalc.h | 58 ++ .../SectionCalculation/ListDlg.cpp | 60 ++ .../SectionCalculation/ListDlg.h | 27 + .../SectionCalculation/PointInfo.cpp | 73 ++ .../SectionCalculation/PointInfo.h | 48 ++ .../SectionCalculation/ReadMe.txt | 70 ++ .../SectionCalculation/ReportDlg.cpp | 53 ++ .../SectionCalculation/ReportDlg.h | 27 + .../SectionCalculation/SectionCalculation.aps | Bin 0 -> 44284 bytes .../SectionCalculation/SectionCalculation.cpp | 102 +++ .../SectionCalculation/SectionCalculation.h | 32 + .../SectionCalculation/SectionCalculation.rc | Bin 0 -> 16276 bytes .../SectionCalculation.vcxproj | 243 ++++++ .../SectionCalculation.vcxproj.filters | 129 ++++ .../SectionCalculationDlg.cpp | 718 ++++++++++++++++++ .../SectionCalculationDlg.h | 80 ++ .../VerticalSectionCalc.cpp | 119 +++ .../SectionCalculation/VerticalSectionCalc.h | 56 ++ .../SectionCalculation/ZoomView.cpp | 319 ++++++++ .../SectionCalculation/ZoomView.h | 75 ++ .../res/SectionCalculation.ico | Bin 0 -> 67777 bytes .../res/SectionCalculation.rc2 | Bin 0 -> 692 bytes .../SectionCalculation/res/icon1.ico | Bin 0 -> 6006 bytes .../SectionCalculation/res/toolbar1.bmp | Bin 0 -> 11178 bytes .../SectionCalculation/resource.h | Bin 0 -> 4138 bytes .../SectionCalculation/stdafx.cpp | 8 + .../SectionCalculation/stdafx.h | 54 ++ .../SectionCalculation/targetver.h | 8 + ...5\351\235\242\346\225\260\346\215\256.txt" | 47 ++ 42 files changed, 3158 insertions(+) create mode 100644 Modify_Part3-ch09/SectionCalculation.exe create mode 100644 Modify_Part3-ch09/SectionCalculation/.vs/SectionCalculation/v14/.suo create mode 100644 Modify_Part3-ch09/SectionCalculation/Debug/SectionCalculation.exe create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation.sln create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/BasicCalc.cpp create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/BasicCalc.h create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/DrawDlg.cpp create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/DrawDlg.h create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/DxfFile.cpp create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/DxfFile.h create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/FileOperation.cpp create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/FileOperation.h create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/HorizonSectionCalc.cpp create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/HorizonSectionCalc.h create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/ListDlg.cpp create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/ListDlg.h create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/PointInfo.cpp create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/PointInfo.h create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/ReadMe.txt create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/ReportDlg.cpp create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/ReportDlg.h create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/SectionCalculation.aps create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/SectionCalculation.cpp create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/SectionCalculation.h create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/SectionCalculation.rc create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/SectionCalculation.vcxproj create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/SectionCalculation.vcxproj.filters create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/SectionCalculationDlg.cpp create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/SectionCalculationDlg.h create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/VerticalSectionCalc.cpp create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/VerticalSectionCalc.h create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/ZoomView.cpp create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/ZoomView.h create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/res/SectionCalculation.ico create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/res/SectionCalculation.rc2 create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/res/icon1.ico create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/res/toolbar1.bmp create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/resource.h create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/stdafx.cpp create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/stdafx.h create mode 100644 Modify_Part3-ch09/SectionCalculation/SectionCalculation/targetver.h create mode 100644 "Modify_Part3-ch09/\346\226\255\351\235\242\346\225\260\346\215\256.txt" diff --git a/Modify_Part3-ch09/SectionCalculation.exe b/Modify_Part3-ch09/SectionCalculation.exe new file mode 100644 index 0000000000000000000000000000000000000000..1e84c0179d210e828f5e47088db34ebcaff17662 GIT binary patch literal 104448 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 R)Hc?p$H*&aCo{~&{SRBA+phos literal 0 HcmV?d00001 diff --git a/Modify_Part3-ch09/SectionCalculation/.vs/SectionCalculation/v14/.suo b/Modify_Part3-ch09/SectionCalculation/.vs/SectionCalculation/v14/.suo new file mode 100644 index 0000000000000000000000000000000000000000..601aa29f3602abb4a60a38b0d916f54b4ed93fa0 GIT binary patch literal 128000 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 TC4^MuKL%j|Uz^=Vv+n-`l-XCu literal 0 HcmV?d00001 diff --git a/Modify_Part3-ch09/SectionCalculation/Debug/SectionCalculation.exe b/Modify_Part3-ch09/SectionCalculation/Debug/SectionCalculation.exe new file mode 100644 index 0000000000000000000000000000000000000000..b817017d4114e00d719a5130d51c3649c65e6d65 GIT binary patch literal 303616 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⁡@mh+N$R!57opeS%%IoiJ9>@J(rfat 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 Q2n-=GguoC2|F;nMA9u+a1^@s6 literal 0 HcmV?d00001 diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation.sln b/Modify_Part3-ch09/SectionCalculation/SectionCalculation.sln new file mode 100644 index 0000000..8bc5569 --- /dev/null +++ b/Modify_Part3-ch09/SectionCalculation/SectionCalculation.sln @@ -0,0 +1,28 @@ +锘 +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.23107.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SectionCalculation", "SectionCalculation\SectionCalculation.vcxproj", "{7B25400A-51C5-449B-87A6-88A0D9B0DC25}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7B25400A-51C5-449B-87A6-88A0D9B0DC25}.Debug|x64.ActiveCfg = Debug|x64 + {7B25400A-51C5-449B-87A6-88A0D9B0DC25}.Debug|x64.Build.0 = Debug|x64 + {7B25400A-51C5-449B-87A6-88A0D9B0DC25}.Debug|x86.ActiveCfg = Debug|Win32 + {7B25400A-51C5-449B-87A6-88A0D9B0DC25}.Debug|x86.Build.0 = Debug|Win32 + {7B25400A-51C5-449B-87A6-88A0D9B0DC25}.Release|x64.ActiveCfg = Release|x64 + {7B25400A-51C5-449B-87A6-88A0D9B0DC25}.Release|x64.Build.0 = Release|x64 + {7B25400A-51C5-449B-87A6-88A0D9B0DC25}.Release|x86.ActiveCfg = Release|Win32 + {7B25400A-51C5-449B-87A6-88A0D9B0DC25}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/BasicCalc.cpp b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/BasicCalc.cpp new file mode 100644 index 0000000..c575e0c --- /dev/null +++ b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/BasicCalc.cpp @@ -0,0 +1,81 @@ +#include "stdafx.h" +#include "BasicCalc.h" + + +CBasicCalc::CBasicCalc() +{ +} + + +CBasicCalc::~CBasicCalc() +{ +} + +double CBasicCalc::Azimuth(double x1, double y1, double x2, double y2)//rad +{ + double a = 0; + double x = x2 - x1; + double y = y2 - y1; + if (fabs(x) < EPCLONG) + { + if (y > 0) + a = PI * 0.5; + if (y < 0) + a = PI * 1.5; + } + a = atan(y / x); + if (x < 0) + a += PI; + if (a > 2.0 * PI) + a -= 2.0 * PI; + if (a < 0) + a += 2.0 * PI; + return a; +} + +double CBasicCalc::Distance(double x1, double y1, double x2, double y2) +{ + double x = x2 - x1; + double y = y2 - y1; + double dis = sqrt(x * x + y * y); + return dis; +} + +void CBasicCalc::SortDis(std::vector& p) +{ + CPointInfo temp; + for (int i = 0; i < p.size() - 1; ++i) + { + for (int j = 0; j < p.size() - 1 - i; ++j) + { + if (p[j].Dis() > p[j + 1].Dis()) + { + temp = p[j]; + p[j] = p[j + 1]; + p[j + 1] = temp; + } + } + } +} + +void CBasicCalc::CalcHeight(std::vector& oripoint, std::vector& insertpoint) +{ + double addNumerator = 0, addDenominator = 0, dis = 0; + for (int i = 0; i < 11; ++i) + { + for (int j = 0; j < oripoint.size(); ++j) + { + dis = Distance(oripoint[j].X(), oripoint[j].Y(), insertpoint[i].X(), insertpoint[i].Y()); + oripoint[j].SetDis(dis); + } + SortDis(oripoint); + for (int k = 0; k < 20; ++k) + { + addNumerator += oripoint[k].H() / oripoint[k].Dis(); + addDenominator += 1.0 / oripoint[k].Dis(); + } + insertpoint[i].SetH(addNumerator / addDenominator); + addNumerator = 0; + addDenominator = 0; + } +} diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/BasicCalc.h b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/BasicCalc.h new file mode 100644 index 0000000..a95f77c --- /dev/null +++ b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/BasicCalc.h @@ -0,0 +1,39 @@ +/****************************************************************************** + +版权所有 (C), 2018-2020, + +****************************************************************************** +文 件 名 : BasicCalc.h +版 本 号 : 初稿 +作 者 : +生成日期 : 2018年10月26日 +最近修改 : +功能描述 : 基本的函数计算 +函数列表 : +* +* + +修改历史 : +1.日 期 : 2018年10月26日 +作 者 : +修改内容 : 创建文件 + +******************************************************************************/ +#pragma once +#include "PointInfo.h" +#include + +const double PI = 3.1415926535897932; +const double EPCLONG = 1.0e-10; +class CBasicCalc +{ +public: + CBasicCalc(); + ~CBasicCalc(); + + double Azimuth(double x1, double y1, double x2, double y2); + double Distance(double x1, double y1, double x2, double y2); + void SortDis(std::vector &p); //冒泡排序,按距离从小到大 + void CalcHeight(std::vector& oripoint, std::vector& insertpoint); //计算高程 +}; + diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/DrawDlg.cpp b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/DrawDlg.cpp new file mode 100644 index 0000000..fc93878 --- /dev/null +++ b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/DrawDlg.cpp @@ -0,0 +1,95 @@ +// DrawDlg.cpp : 实现文件 +// + +#include "stdafx.h" +#include "SectionCalculation.h" +#include "DrawDlg.h" +#include "afxdialogex.h" + + +// CDrawDlg 对话框 + +IMPLEMENT_DYNAMIC(CDrawDlg, CDialogEx) + +CDrawDlg::CDrawDlg(CWnd* pParent /*=NULL*/) + : CDialogEx(IDD_DLG_DRAW, pParent) +{ + +} + +CDrawDlg::~CDrawDlg() +{ +} + +void CDrawDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); +} + + +BEGIN_MESSAGE_MAP(CDrawDlg, CDialogEx) + ON_WM_SIZE() + ON_WM_MOUSEWHEEL() + ON_WM_MOUSEMOVE() + ON_WM_PAINT() +END_MESSAGE_MAP() + + +// CDrawDlg 消息处理程序 + + +BOOL CDrawDlg::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + + // TODO: 在此添加额外的初始化 + CRect rect; + this->GetParent()->GetClientRect(&rect); + rect.top += 2; + rect.left += 2; + rect.right -= 10; + rect.bottom -= 2; + this->MoveWindow(rect); + + return TRUE; // return TRUE unless you set the focus to a control + // 异常: OCX 属性页应返回 FALSE +} + + +void CDrawDlg::OnSize(UINT nType, int cx, int cy) +{ + CDialogEx::OnSize(nType, cx, cy); + if (::IsWindow(m_hWnd)) + { + CZoomView::SetScreenPoint(cx, cy); + Invalidate(); + } +} + + +BOOL CDrawDlg::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt) +{ + // TODO: 在此添加消息处理程序代码和/或调用默认值 + CZoomView::WheelScale(zDelta); + Invalidate(); + return CDialogEx::OnMouseWheel(nFlags, zDelta, pt); +} + + +void CDrawDlg::OnMouseMove(UINT nFlags, CPoint point) +{ + // TODO: 在此添加消息处理程序代码和/或调用默认值 + CZoomView::CoorMove(point.x, point.y, nFlags); + if (nFlags == 1) + Invalidate(); + CDialogEx::OnMouseMove(nFlags, point); +} + + +void CDrawDlg::OnPaint() +{ + CPaintDC dc(this); // device context for painting + // TODO: 在此处添加消息处理程序代码 + // 不为绘图消息调用 CDialogEx::OnPaint() + CZoomView::Draw(dc); +} diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/DrawDlg.h b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/DrawDlg.h new file mode 100644 index 0000000..0b8d1de --- /dev/null +++ b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/DrawDlg.h @@ -0,0 +1,29 @@ +#pragma once +#include "ZoomView.h" + +// CDrawDlg 对话框 + +class CDrawDlg : public CDialogEx +{ + DECLARE_DYNAMIC(CDrawDlg) + +public: + CDrawDlg(CWnd* pParent = NULL); // 标准构造函数 + virtual ~CDrawDlg(); + +// 对话框数据 +#ifdef AFX_DESIGN_TIME + enum { IDD = IDD_DLG_DRAW }; +#endif + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 + + DECLARE_MESSAGE_MAP() +public: + virtual BOOL OnInitDialog(); + afx_msg void OnSize(UINT nType, int cx, int cy); + afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt); + afx_msg void OnMouseMove(UINT nFlags, CPoint point); + afx_msg void OnPaint(); +}; diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/DxfFile.cpp b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/DxfFile.cpp new file mode 100644 index 0000000..f9077a2 --- /dev/null +++ b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/DxfFile.cpp @@ -0,0 +1,104 @@ +#include "stdafx.h" +#include "DxfFile.h" + + +CDxfFile::CDxfFile() +{ +} + + +CDxfFile::~CDxfFile() +{ +} + +bool CDxfFile::Begin() +{ + CFileDialog dlg(false, _T("dxf"), _T("resultDXF"), 6UL, _T("DXF文件(*.dxf)|*.dxf||")); + if (IDCANCEL == dlg.DoModal()) + return false; + + CString filename = dlg.GetPathName(); + if (!file.Open(filename, CFile::modeCreate | CFile::modeWrite)) + return false; + + file.WriteString(_T("0\n")); + file.WriteString(_T("SECTION\n")); + file.WriteString(_T("2\n")); + file.WriteString(_T("ENTITIES\n")); + return true; +} + +void CDxfFile::Line(double x1, double y1, double x2, double y2) +{ + file.WriteString(_T("0\n")); + file.WriteString(_T("LINE\n")); + file.WriteString(_T("8\n")); + file.WriteString(_T("0\n")); + file.WriteString(_T("10\n")); + str.Format(_T("%lf\n"), x1); + file.WriteString(str); + file.WriteString(_T("20\n")); + str.Format(_T("%lf\n"), y1); + file.WriteString(str); + file.WriteString(_T("30\n")); + file.WriteString(_T("0.0\n")); + + file.WriteString(_T("11\n")); + str.Format(_T("%lf\n"), x2); + file.WriteString(str); + file.WriteString(_T("21\n")); + str.Format(_T("%lf\n"), y2); + file.WriteString(str); + file.WriteString(_T("31\n")); + file.WriteString(_T("0.0\n")); +} + +void CDxfFile::Point(double x1, double y1) +{ + file.WriteString(_T("0\n")); + file.WriteString(_T("POINT\n")); + file.WriteString(_T("8\n")); + file.WriteString(_T("0\n")); + file.WriteString(_T("10\n")); + str.Format(_T("%lf\n"), x1); + file.WriteString(str); + file.WriteString(_T("20\n")); + str.Format(_T("%lf\n"), y1); + file.WriteString(str); + file.WriteString(_T("30\n")); + file.WriteString(_T("0.0\n")); +} + +void CDxfFile::Text(double x1, double y1, CString strID) +{ + file.WriteString(_T("0\n")); + file.WriteString(_T("TEXT\n")); + file.WriteString(_T("8\n")); + file.WriteString(_T("0\n")); + file.WriteString(_T("10\n")); + str.Format(_T("%lf\n"), x1); + file.WriteString(str); + file.WriteString(_T("20\n")); + str.Format(_T("%lf\n"), y1); + file.WriteString(str); + file.WriteString(_T("30\n")); + file.WriteString(_T("0.0\n")); + file.WriteString(_T("40\n")); + file.WriteString(_T("10\n")); + + file.WriteString(_T("1\n")); + str.Format(_T("%s\n"), strID); + file.WriteString(str); +} + +void CDxfFile::End() +{ + file.WriteString(_T("0\n")); + file.WriteString(_T("ENDSEC\n")); + file.WriteString(_T("0\n")); + file.WriteString(_T("EOF\n")); + + file.Close(); + AfxMessageBox(_T("dxf生成完毕!!")); +} + diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/DxfFile.h b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/DxfFile.h new file mode 100644 index 0000000..1a3aaef --- /dev/null +++ b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/DxfFile.h @@ -0,0 +1,39 @@ +/****************************************************************************** + +版权所有 (C), 2018-2020, + +****************************************************************************** +文 件 名 : DxfFile.h +版 本 号 : 初稿 +作 者 : +生成日期 : 2018年10月26日 +最近修改 : +功能描述 : 写DXF文件 +函数列表 : +* +* + +修改历史 : +1.日 期 : 2018年10月26日 +作 者 : +修改内容 : 创建文件 + +******************************************************************************/ +#pragma once +class CDxfFile +{ +public: + CDxfFile(); + ~CDxfFile(); + + bool Begin(); //dxf文件头 + void Line(double x1, double y1, double x2, double y2); //画线 + void Point(double x1, double y1); //画点 + void Text(double x1, double y1, CString strID); //写文字 + void End(); //dxf文件尾 + +private: + CString str; + CStdioFile file; +}; + diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/FileOperation.cpp b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/FileOperation.cpp new file mode 100644 index 0000000..1ed441e --- /dev/null +++ b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/FileOperation.cpp @@ -0,0 +1,145 @@ +#include "stdafx.h" +#include "FileOperation.h" + +CString CFileOperation::s_horizonSectionContent = _T(""); +CString CFileOperation::s_verticalSectionContent = _T(""); +CFileOperation::CFileOperation() +{ + m_h0 = 0; +} + + +CFileOperation::~CFileOperation() +{ +} + +bool CFileOperation::ReadData() +{ + CFileDialog dlg(true, _T("txt"), 0, 6UL, _T("文本文件(*.txt)|*.txt||")); + if (IDCANCEL == dlg.DoModal()) + return false; + CString filename = dlg.GetPathName(); + CStdioFile file; + if (!file.Open(filename, CFile::modeRead)) + return false; + + CString strline, strbuf; + std::vector data; + m_pOriPoint.clear(); + m_pKnowPoint.clear(); + + file.ReadString(strline); + data.clear(); + strline.Remove(' '); + while (strline.GetLength()) + { + strbuf = strline.SpanExcluding(_T(",")); + data.push_back(strbuf); + strline.Delete(0, strbuf.GetLength() + 1); + } + if (data.size() == 2) + { + m_h0 = _tstof(data[1]); + } + else + { + AfxMessageBox(_T("文件打开错误!")); + return false; + } + + CString str1, str2, str3; + file.ReadString(strline); + data.clear(); + strline.Remove(' '); + while (strline.GetLength()) + { + strbuf = strline.SpanExcluding(_T(",")); + data.push_back(strbuf); + strline.Delete(0, strbuf.GetLength() + 1); + } + if (data.size() == 3) + { + str1 = data[0]; + str2 = data[1]; + str3 = data[2]; + } + else + { + AfxMessageBox(_T("文件打开错误!")); + return false; + } + + while (file.ReadString(strline)) + { + data.clear(); + strline.Remove(' '); + if (strline.GetLength() > 0) + { + while (strline.GetLength()) + { + strbuf = strline.SpanExcluding(_T(",")); + data.push_back(strbuf); + strline.Delete(0, strbuf.GetLength() + 1); + } + if (data.size() == 4) + { + if (data[0] == str1 || data[0] == str2 || data[0] == str3) + { + m_pKnowPoint.push_back(CPointInfo(data[0], _tstof(data[1]), _tstof(data[2]), _tstof(data[3]))); + } + m_pOriPoint.push_back(CPointInfo(data[0], _tstof(data[1]), _tstof(data[2]), _tstof(data[3]))); + } + else + { + AfxMessageBox(_T("文件打开错误!")); + return false; + } + } + } + file.Close(); + return true; +} + +void CFileOperation::WriteTXT() +{ + CFileDialog dlg(false, _T("txt"), 0, 6UL, _T("文本文件(*.txt)|*.txt||")); + if (IDCANCEL == dlg.DoModal()) + return; + CString filename = dlg.GetPathName(); + + CStdioFile file; + if (!file.Open(filename, CFile::modeCreate | CFile::modeWrite)) + return; + + CString strbuf; + CString data = s_verticalSectionContent; + while (data.GetLength()) + { + strbuf = data.SpanExcluding(_T("\r\n")); + file.WriteString(strbuf + _T("\n")); + data.Delete(0, strbuf.GetLength() + 2); + } + data = s_horizonSectionContent; + while (data.GetLength()) + { + strbuf = data.SpanExcluding(_T("\r\n")); + file.WriteString(strbuf + _T("\n")); + data.Delete(0, strbuf.GetLength() + 2); + } + file.Close(); +} + +std::vector CFileOperation::OriPoint() const +{ + return m_pOriPoint; +} + +std::vector CFileOperation::KnowPoint() const +{ + return m_pKnowPoint; +} + +double CFileOperation::H0() const +{ + return m_h0; +} diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/FileOperation.h b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/FileOperation.h new file mode 100644 index 0000000..19e3c37 --- /dev/null +++ b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/FileOperation.h @@ -0,0 +1,48 @@ +/****************************************************************************** + +版权所有 (C), 2018-2020, + +****************************************************************************** +文 件 名 : FileOperation.h +版 本 号 : 初稿 +作 者 : +生成日期 : 2018年10月26日 +最近修改 : +功能描述 : 文件的相关操作:读取,写入。 +函数列表 : +* +* + +修改历史 : +1.日 期 : 2018年10月26日 +作 者 : +修改内容 : 创建文件 + +******************************************************************************/ +#pragma once +#include "BasicCalc.h" +#include + +class CFileOperation +{ +public: + CFileOperation(); + ~CFileOperation(); +public: + bool ReadData(); //文件读取函数 + void WriteTXT(); //输出TXT文件 +public: + std::vector OriPoint() const; + std::vector KnowPoint() const; + double H0() const; + +public: + CBasicCalc m_basicCalc; + static CString s_horizonSectionContent; //用于存储输出的rr字符串 + static CString s_verticalSectionContent; //用于存储输出的rr字符串 +private: + std::vector m_pOriPoint; //原始数据 + std::vector m_pKnowPoint; //已知数据 + double m_h0; +}; + diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/HorizonSectionCalc.cpp b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/HorizonSectionCalc.cpp new file mode 100644 index 0000000..34a6e54 --- /dev/null +++ b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/HorizonSectionCalc.cpp @@ -0,0 +1,144 @@ +#include "stdafx.h" +#include "HorizonSectionCalc.h" + + +CHorizonSectionCalc::CHorizonSectionCalc() +{ + detta = 5; + //横断面的参数 + am = 0; + an = 0; //方位角 + mX = 0; + mY = 0; + nX = 0; + nY = 0; + m_mTotalArea = 0; //横断面M的总面积 + m_nTotalArea = 0;//横断面N的总面积 +} + + +CHorizonSectionCalc::~CHorizonSectionCalc() +{ +} + +void CHorizonSectionCalc::CalcHorizonSection(CFileOperation fileOper) +{ + m_fileOper = fileOper; + m_pOripoint.clear(); + m_pOripoint = m_fileOper.OriPoint(); + m_pKnowpoint.clear(); + m_pKnowpoint = m_fileOper.KnowPoint(); + + double a1 = m_fileOper.m_basicCalc.Azimuth(m_pKnowpoint[0].X(), m_pKnowpoint[0].Y(), m_pKnowpoint[1].X(), m_pKnowpoint[1].Y()); + double a2 = m_fileOper.m_basicCalc.Azimuth(m_pKnowpoint[1].X(), m_pKnowpoint[1].Y(), m_pKnowpoint[2].X(), m_pKnowpoint[2].Y()); + am = a1 - PI / 2.0; + an = a2 - PI / 2.0; + mX = (m_pKnowpoint[0].X() + m_pKnowpoint[1].X()) / 2.0; + mY = (m_pKnowpoint[0].Y() + m_pKnowpoint[1].Y()) / 2.0; + nX = (m_pKnowpoint[1].X() + m_pKnowpoint[2].X()) / 2.0; + nY = (m_pKnowpoint[1].Y() + m_pKnowpoint[2].Y()) / 2.0; + + CalcInsertPointPosition(); + CalcHeight(); + CalcArea(m_pMHInsertPoint, m_mTotalArea); + CalcArea(m_pNHInsertPoint, m_nTotalArea); + AfxMessageBox(_T("横断面 计算完成!!")); + + WriteData(m_fileOper.s_horizonSectionContent); +} + +void CHorizonSectionCalc::CalcInsertPointPosition() +{ + m_pMHInsertPoint.clear(); + m_pNHInsertPoint.clear(); + + double dX, dY, dK; + CString str; + for (int i = 0; i < 11; ++i) + { + str.Format(_T("C%d"), i - 5); + dX = mX + (i - 5) * detta * cos(am); + dY = mY + (i - 5) * detta * sin(am); + dK = i * detta; + m_pMHInsertPoint.push_back(CPointInfo(str, dX, dY, 0, dK)); + } + str.Format(_T("M")); + m_pMHInsertPoint[5].SetPointName(str); + + for (int i = 0; i < 11; ++i) + { + str.Format(_T("C%d"), i - 5); + dX = nX + (i - 5) * detta * cos(an); + dY = nY + (i - 5) * detta * sin(an); + dK = i * detta; + m_pNHInsertPoint.push_back(CPointInfo(str, dX, dY, 0, dK)); + } + str.Format(_T("N")); + m_pNHInsertPoint[5].SetPointName(str); +} + +void CHorizonSectionCalc::CalcHeight() +{ + m_fileOper.m_basicCalc.CalcHeight(m_pOripoint, m_pMHInsertPoint); + m_fileOper.m_basicCalc.CalcHeight(m_pOripoint, m_pNHInsertPoint); +} + +void CHorizonSectionCalc::CalcArea(std::vector& insertpoint, double& totalArea) +{ + totalArea = 0; + double H0 = m_fileOper.H0(); + for (int i = 0; i < insertpoint.size() - 1; ++i) + { + totalArea += (insertpoint[i].H() + insertpoint[i + 1].H() - 2.0 * H0) / 2.0 * detta; + } +} + +void CHorizonSectionCalc::WriteData(CString & content) +{ + content = _T(""); + setlocale(LC_ALL, ""); + CString str; + content += _T("\r\n横断面 M 信息\r\n"); + content += _T("------------------------------------------------------------------------------------\r\n"); + if (m_pMHInsertPoint.size() > 0) + { + str.Format(_T("横断面面积:%.3lf\r\n"), m_mTotalArea); + content += str; + str.Format(_T("横断面全长:50\r\n")); + content += str; + content += _T("线路主点\r\n"); + content += _T("点名\t里程K(m) X坐标(m)\tY坐标(m)\tH坐标(m)\r\n"); + for (int i = 0; i < m_pMHInsertPoint.size(); ++i) + { + str.Format(_T("%s\t%.3lf\t%.3lf\t%.3lf\t%.3lf\r\n"), m_pMHInsertPoint[i].PointName(), m_pMHInsertPoint[i].K(), m_pMHInsertPoint[i].X(), m_pMHInsertPoint[i].Y(), m_pMHInsertPoint[i].H()); + content += str; + } + } + + content += _T("\r\n横断面 N 信息\r\n"); + content += _T("------------------------------------------------------------------------------------\r\n"); + if (m_pNHInsertPoint.size() > 0) + { + str.Format(_T("横断面面积:%.3lf\r\n"), m_nTotalArea); + content += str; + str.Format(_T("横断面全长:50\r\n")); + content += str; + content += _T("线路主点\r\n"); + content += _T("点名\t里程K(m) X坐标(m)\tY坐标(m)\tH坐标(m)\r\n"); + for (int i = 0; i < m_pNHInsertPoint.size(); ++i) + { + str.Format(_T("%s\t%.3lf\t%.3lf\t%.3lf\t%.3lf\r\n"), m_pNHInsertPoint[i].PointName(), m_pNHInsertPoint[i].K(), m_pNHInsertPoint[i].X(), m_pNHInsertPoint[i].Y(), m_pNHInsertPoint[i].H()); + content += str; + } + } +} + +std::vector CHorizonSectionCalc::MHInsertPoint() const +{ + return m_pMHInsertPoint; +} + +std::vector CHorizonSectionCalc::NHInsertPoint() const +{ + return m_pNHInsertPoint; +} diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/HorizonSectionCalc.h b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/HorizonSectionCalc.h new file mode 100644 index 0000000..55199c2 --- /dev/null +++ b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/HorizonSectionCalc.h @@ -0,0 +1,58 @@ +/****************************************************************************** + +版权所有 (C), 2018-2020, + +****************************************************************************** +文 件 名 : HorizonSectionCalc.h +版 本 号 : 初稿 +作 者 : +生成日期 : 2018年10月26日 +最近修改 : +功能描述 : 横断面的计算。MK0、 K1的中心点,N是K1、K2的中心点,分别过M和N点绘制横断面。 +函数列表 : +* +* + +修改历史 : +1.日 期 : 2018年10月26日 +作 者 : +修改内容 : 创建文件 + +******************************************************************************/ +#pragma once +#include "FileOperation.h" +class CHorizonSectionCalc +{ +public: + CHorizonSectionCalc(); + ~CHorizonSectionCalc(); + +public: + void CalcHorizonSection(CFileOperation fileOper); //计算横断面信息 + +private: + void CalcInsertPointPosition(); //计算横断面插入点的信息 + void CalcHeight(); //计算高程 + void CalcArea(std::vector& insertpoint, double& totalArea); //计算面积 + void WriteData(CString &content); + +public: + std::vector MHInsertPoint() const; + std::vector NHInsertPoint() const; + +private: + std::vector m_pMHInsertPoint; //横断面的插值 + std::vector m_pNHInsertPoint; //横断面的插值 + CFileOperation m_fileOper; + std::vector m_pOripoint; + std::vector m_pKnowpoint; + + double detta; //插值的间距 + + //横断面的参数 + double am, an; //方位角 + double mX, mY; + double nX, nY; + double m_mTotalArea, m_nTotalArea; //横断面M , N的总面积 +}; + diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/ListDlg.cpp b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/ListDlg.cpp new file mode 100644 index 0000000..fa9b4ab --- /dev/null +++ b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/ListDlg.cpp @@ -0,0 +1,60 @@ +// ListDlg.cpp : 实现文件 +// + +#include "stdafx.h" +#include "SectionCalculation.h" +#include "ListDlg.h" +#include "afxdialogex.h" + + +// CListDlg 对话框 + +IMPLEMENT_DYNAMIC(CListDlg, CDialogEx) + +CListDlg::CListDlg(CWnd* pParent /*=NULL*/) + : CDialogEx(IDD_DLG_LIST, pParent) +{ + +} + +CListDlg::~CListDlg() +{ +} + +void CListDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Control(pDX, IDC_LIST1, m_list); +} + + +BEGIN_MESSAGE_MAP(CListDlg, CDialogEx) +END_MESSAGE_MAP() + + +// CListDlg 消息处理程序 + + +BOOL CListDlg::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + + // TODO: 在此添加额外的初始化 + CRect rect; + this->GetParent()->GetClientRect(&rect); + rect.top += 2; + rect.left += 2; + rect.right -= 10; + rect.bottom -= 2; + m_list.MoveWindow(rect); + + m_list.ModifyStyle(0, LVS_REPORT); + m_list.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT); + m_list.InsertColumn(0, _T("点名"), LVCFMT_LEFT, 150); + m_list.InsertColumn(1, _T("X坐标"), LVCFMT_LEFT, 150); + m_list.InsertColumn(2, _T("Y坐标"), LVCFMT_LEFT, 150); + m_list.InsertColumn(3, _T("H坐标"), LVCFMT_LEFT, 150); + + return TRUE; // return TRUE unless you set the focus to a control + // 异常: OCX 属性页应返回 FALSE +} diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/ListDlg.h b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/ListDlg.h new file mode 100644 index 0000000..e6b34aa --- /dev/null +++ b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/ListDlg.h @@ -0,0 +1,27 @@ +#pragma once +#include "afxcmn.h" + + +// CListDlg 对话框 + +class CListDlg : public CDialogEx +{ + DECLARE_DYNAMIC(CListDlg) + +public: + CListDlg(CWnd* pParent = NULL); // 标准构造函数 + virtual ~CListDlg(); + +// 对话框数据 +#ifdef AFX_DESIGN_TIME + enum { IDD = IDD_DLG_LIST }; +#endif + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 + + DECLARE_MESSAGE_MAP() +public: + CListCtrl m_list; + virtual BOOL OnInitDialog(); +}; diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/PointInfo.cpp b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/PointInfo.cpp new file mode 100644 index 0000000..0d09d8a --- /dev/null +++ b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/PointInfo.cpp @@ -0,0 +1,73 @@ +#include "stdafx.h" +#include "PointInfo.h" + + +CPointInfo::CPointInfo() +{ + m_pointName = _T(""); + m_x = 0; + m_y = 0; + m_h = 0; + m_k = 0; + m_dis = 0; +} + +CPointInfo::CPointInfo(CString pointName, double x, double y, double h, double k, double dis) +{ + m_pointName = pointName; + m_x = x; + m_y = y; + m_h = h; + m_k = k; + m_dis = dis; +} + + +CPointInfo::~CPointInfo() +{ +} + +CString CPointInfo::PointName() const +{ + return m_pointName; +} + +double CPointInfo::X() const +{ + return m_x; +} + +double CPointInfo::Y() const +{ + return m_y; +} + +double CPointInfo::H() const +{ + return m_h; +} + +double CPointInfo::K() const +{ + return m_k; +} + +double CPointInfo::Dis() const +{ + return m_dis; +} + +void CPointInfo::SetPointName(CString str) +{ + m_pointName = str; +} + +void CPointInfo::SetH(double h) +{ + m_h = h; +} + +void CPointInfo::SetDis(double dis) +{ + m_dis = dis; +} diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/PointInfo.h b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/PointInfo.h new file mode 100644 index 0000000..72d2b35 --- /dev/null +++ b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/PointInfo.h @@ -0,0 +1,48 @@ +/****************************************************************************** + +版权所有 (C), 2018-2020, + +****************************************************************************** +文 件 名 : PointInfo.h +版 本 号 : 初稿 +作 者 : +生成日期 : 2018年10月26日 +最近修改 : +功能描述 : 存储点位信息 +函数列表 : +* +* + +修改历史 : +1.日 期 : 2018年10月26日 +作 者 : +修改内容 : 创建文件 + +******************************************************************************/ +#pragma once +class CPointInfo +{ +public: + CPointInfo(); + CPointInfo(CString pointName, double x, double y, double h, double k = 0, double dis = 0); + ~CPointInfo(); +public: + CString PointName() const; + double X() const; + double Y() const; + double H() const; + double K() const; + double Dis() const; + void SetPointName(CString str); + void SetH(double h); + void SetDis(double dis); + +private: + CString m_pointName; //点名 + double m_x; //x坐标 + double m_y; //y坐标 + double m_h; //h坐标 + double m_k; //里程 + double m_dis; //距离 +}; + diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/ReadMe.txt b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/ReadMe.txt new file mode 100644 index 0000000..457d50c --- /dev/null +++ b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/ReadMe.txt @@ -0,0 +1,70 @@ +锘================================================================================ + MICROSOFT 鍩虹绫诲簱 : SectionCalculation 椤圭洰姒傝堪 +=============================================================================== + +搴旂敤绋嬪簭鍚戝宸蹭负鎮ㄥ垱寤轰簡姝 SectionCalculation 搴旂敤绋嬪簭銆傛搴旂敤绋嬪簭涓嶄粎婕旂ず Microsoft 鍩虹绫荤殑鍩烘湰浣跨敤鏂规硶锛岃繕鍙綔涓烘偍缂栧啓搴旂敤绋嬪簭鐨勮捣鐐广 + +鏈枃浠舵瑕佷粙缁嶇粍鎴 SectionCalculation 搴旂敤绋嬪簭鐨勬瘡涓枃浠剁殑鍐呭銆 + +SectionCalculation.vcxproj + 杩欐槸浣跨敤搴旂敤绋嬪簭鍚戝鐢熸垚鐨 VC++ 椤圭洰鐨勪富椤圭洰鏂囦欢锛屽叾涓寘鍚敓鎴愯鏂囦欢鐨 Visual C++ 鐨勭増鏈俊鎭紝浠ュ強鏈夊叧浣跨敤搴旂敤绋嬪簭鍚戝閫夋嫨鐨勫钩鍙般侀厤缃拰椤圭洰鍔熻兘鐨勪俊鎭 + +SectionCalculation.vcxproj.filters + 杩欐槸浣跨敤鈥滃簲鐢ㄧ▼搴忓悜瀵尖濈敓鎴愮殑 VC++ 椤圭洰绛涢夊櫒鏂囦欢銆傚畠鍖呭惈鏈夊叧椤圭洰鏂囦欢涓庣瓫閫夊櫒涔嬮棿鐨勫叧鑱斾俊鎭傚湪 IDE 涓紝閫氳繃杩欑鍏宠仈锛屽湪鐗瑰畾鑺傜偣涓嬩互鍒嗙粍褰㈠紡鏄剧ず鍏锋湁鐩镐技鎵╁睍鍚嶇殑鏂囦欢銆備緥濡傦紝鈥.cpp鈥濇枃浠朵笌鈥滄簮鏂囦欢鈥濈瓫閫夊櫒鍏宠仈銆 + +SectionCalculation.h + 杩欐槸搴旂敤绋嬪簭鐨勪富澶存枃浠躲 + 鍏朵腑鍖呮嫭鍏朵粬椤圭洰鐗瑰畾鐨勬爣澶达紙鍖呮嫭 Resource.h锛夛紝骞跺0鏄 CSectionCalculationApp 搴旂敤绋嬪簭绫汇 + +SectionCalculation.cpp + 杩欐槸鍖呭惈搴旂敤绋嬪簭绫 CSectionCalculationApp 鐨勪富搴旂敤绋嬪簭婧愭枃浠躲 + +SectionCalculation.rc + 杩欐槸绋嬪簭浣跨敤鐨勬墍鏈 Microsoft Windows 璧勬簮鐨勫垪琛ㄣ傚畠鍖呮嫭 RES 瀛愮洰褰曚腑瀛樺偍鐨勫浘鏍囥佷綅鍥惧拰鍏夋爣銆傛鏂囦欢鍙互鐩存帴鍦 Microsoft Visual C++ 涓繘琛岀紪杈戙傞」鐩祫婧愬寘鍚湪 2052 涓 + +res\SectionCalculation.ico + 杩欐槸鐢ㄤ綔搴旂敤绋嬪簭鍥炬爣鐨勫浘鏍囨枃浠躲傛鍥炬爣鍖呮嫭鍦ㄤ富璧勬簮鏂囦欢 SectionCalculation.rc 涓 + +res\SectionCalculation.rc2 + 姝ゆ枃浠跺寘鍚笉鍦 Microsoft Visual C++ 涓繘琛岀紪杈戠殑璧勬簮銆傛偍搴旇灏嗕笉鍙敱璧勬簮缂栬緫鍣ㄧ紪杈戠殑鎵鏈夎祫婧愭斁鍦ㄦ鏂囦欢涓 + + +///////////////////////////////////////////////////////////////////////////// + +搴旂敤绋嬪簭鍚戝鍒涘缓涓涓璇濇绫伙細 + +SectionCalculationDlg.h銆丼ectionCalculationDlg.cpp - 瀵硅瘽妗 + 杩欎簺鏂囦欢鍖呭惈 CSectionCalculationDlg 绫汇傛绫诲畾涔夊簲鐢ㄧ▼搴忕殑涓诲璇濇鐨勮涓恒傚璇濇妯℃澘鍖呭惈鍦 SectionCalculation.rc 涓紝璇ユ枃浠跺彲浠ュ湪 Microsoft Visual C++ 涓紪杈戙 + +///////////////////////////////////////////////////////////////////////////// + +鍏朵粬鍔熻兘锛 + +ActiveX 鎺т欢 + 璇ュ簲鐢ㄧ▼搴忓寘鍚浣跨敤 ActiveX 鎺т欢鐨勬敮鎸併 + +鎵撳嵃鍜屾墦鍗伴瑙堟敮鎸 + 搴旂敤绋嬪簭鍚戝閫氳繃浠 MFC 搴撹皟鐢 CView 绫讳腑鐨勬垚鍛樺嚱鏁扮敓鎴愪唬鐮侊紝鏉ュ鐞嗘墦鍗般佹墦鍗拌缃拰鎵撳嵃棰勮鍛戒护銆 + +///////////////////////////////////////////////////////////////////////////// + +鍏朵粬鏍囧噯鏂囦欢: + +StdAfx.h, StdAfx.cpp + 杩欎簺鏂囦欢鐢ㄤ簬鐢熸垚鍚嶄负 SectionCalculation.pch 鐨勯缂栬瘧澶 (PCH) 鏂囦欢鍜屽悕涓 StdAfx.obj 鐨勯缂栬瘧绫诲瀷鏂囦欢銆 + +Resource.h + 杩欐槸鏍囧噯澶存枃浠讹紝鍙敤浜庡畾涔夋柊鐨勮祫婧 ID銆侻icrosoft Visual C++ 灏嗚鍙栧苟鏇存柊姝ゆ枃浠躲 + +SectionCalculation.manifest + Windows XP 浣跨敤搴旂敤绋嬪簭娓呭崟鏂囦欢鏉ユ弿杩扮壒瀹氱増鏈殑骞惰绋嬪簭闆嗙殑搴旂敤绋嬪簭渚濊禆椤广傚姞杞界▼搴忎娇鐢ㄨ繖浜涗俊鎭潵浠庣▼搴忛泦缂撳瓨涓姞杞界浉搴旂殑绋嬪簭闆嗭紝骞朵繚鎶ゅ叾涓嶈搴旂敤绋嬪簭璁块棶銆傚簲鐢ㄧ▼搴忔竻鍗曞彲鑳戒細鍖呭惈鍦ㄥ唴锛屼互浣滀负涓庡簲鐢ㄧ▼搴忓彲鎵ц鏂囦欢瀹夎鍦ㄥ悓涓鏂囦欢澶逛腑鐨勫閮 .manifest 鏂囦欢杩涜閲嶆柊鍒嗗彂锛屽畠杩樺彲鑳戒互璧勬簮鐨勫舰寮忓寘鍚湪鍙墽琛屾枃浠朵腑銆 +///////////////////////////////////////////////////////////////////////////// + +鍏朵粬娉ㄩ噴: + +搴旂敤绋嬪簭鍚戝浣跨敤鈥淭ODO:鈥濇潵鎸囩ず搴旀坊鍔犳垨鑷畾涔夌殑婧愪唬鐮侀儴鍒嗐 + +濡傛灉搴旂敤绋嬪簭浣跨敤鍏变韩 DLL 涓殑 MFC锛屾偍灏嗛渶瑕侀噸鏂板垎鍙 MFC DLL銆傚鏋滃簲鐢ㄧ▼搴忔墍浣跨敤鐨勮瑷涓庢搷浣滅郴缁熺殑鍖哄煙璁剧疆涓嶅悓锛屽垯杩橀渶瑕侀噸鏂板垎鍙戠浉搴旂殑鏈湴鍖栬祫婧 mfc110XXX.DLL銆 +鏈夊叧涓婅堪璇濋鐨勬洿澶氫俊鎭紝璇峰弬瑙 MSDN 鏂囨。涓湁鍏抽噸鏂板垎鍙 Visual C++ 搴旂敤绋嬪簭鐨勯儴鍒嗐 + +///////////////////////////////////////////////////////////////////////////// diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/ReportDlg.cpp b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/ReportDlg.cpp new file mode 100644 index 0000000..04893c0 --- /dev/null +++ b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/ReportDlg.cpp @@ -0,0 +1,53 @@ +// ReportDlg.cpp : 实现文件 +// + +#include "stdafx.h" +#include "SectionCalculation.h" +#include "ReportDlg.h" +#include "afxdialogex.h" + + +// CReportDlg 对话框 + +IMPLEMENT_DYNAMIC(CReportDlg, CDialogEx) + +CReportDlg::CReportDlg(CWnd* pParent /*=NULL*/) + : CDialogEx(IDD_DLG_REPORT, pParent) +{ + +} + +CReportDlg::~CReportDlg() +{ +} + +void CReportDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Control(pDX, IDC_EDIT1, m_edit); +} + + +BEGIN_MESSAGE_MAP(CReportDlg, CDialogEx) +END_MESSAGE_MAP() + + +// CReportDlg 消息处理程序 + + +BOOL CReportDlg::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + + // TODO: 在此添加额外的初始化 + CRect rect; + this->GetParent()->GetClientRect(&rect); + rect.top += 2; + rect.left += 2; + rect.right -= 10; + rect.bottom -= 2; + m_edit.MoveWindow(rect); + + return TRUE; // return TRUE unless you set the focus to a control + // 异常: OCX 属性页应返回 FALSE +} diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/ReportDlg.h b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/ReportDlg.h new file mode 100644 index 0000000..44cba40 --- /dev/null +++ b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/ReportDlg.h @@ -0,0 +1,27 @@ +#pragma once +#include "afxwin.h" + + +// CReportDlg 对话框 + +class CReportDlg : public CDialogEx +{ + DECLARE_DYNAMIC(CReportDlg) + +public: + CReportDlg(CWnd* pParent = NULL); // 标准构造函数 + virtual ~CReportDlg(); + +// 对话框数据 +#ifdef AFX_DESIGN_TIME + enum { IDD = IDD_DLG_REPORT }; +#endif + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 + + DECLARE_MESSAGE_MAP() +public: + CEdit m_edit; + virtual BOOL OnInitDialog(); +}; diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/SectionCalculation.aps b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/SectionCalculation.aps new file mode 100644 index 0000000000000000000000000000000000000000..bfc9142f9ad694fb2a978d7c5602da1216a0cb87 GIT binary patch literal 44284 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 + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {7B25400A-51C5-449B-87A6-88A0D9B0DC25} + SectionCalculation + 8.1 + MFCProj + + + + Application + true + v140 + Unicode + Dynamic + + + Application + false + v140 + true + Unicode + Dynamic + + + Application + true + v140 + Unicode + Dynamic + + + Application + false + v140 + true + Unicode + Dynamic + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + Use + Level3 + Disabled + WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions) + + + Windows + true + + + false + true + _DEBUG;%(PreprocessorDefinitions) + + + 0x0804 + _DEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + Use + Level3 + Disabled + _WINDOWS;_DEBUG;%(PreprocessorDefinitions) + + + Windows + true + + + false + true + _DEBUG;%(PreprocessorDefinitions) + + + 0x0804 + _DEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + Level3 + Use + MaxSpeed + true + true + WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions) + + + Windows + true + true + true + + + false + true + NDEBUG;%(PreprocessorDefinitions) + + + 0x0804 + NDEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + Level3 + Use + MaxSpeed + true + true + _WINDOWS;NDEBUG;%(PreprocessorDefinitions) + + + Windows + true + true + true + + + false + true + NDEBUG;%(PreprocessorDefinitions) + + + 0x0804 + NDEBUG;%(PreprocessorDefinitions) + $(IntDir);%(AdditionalIncludeDirectories) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create + Create + Create + Create + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/SectionCalculation.vcxproj.filters b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/SectionCalculation.vcxproj.filters new file mode 100644 index 0000000..fa77db8 --- /dev/null +++ b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/SectionCalculation.vcxproj.filters @@ -0,0 +1,129 @@ +锘 + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + + + + 澶存枃浠 + + + 澶存枃浠 + + + 澶存枃浠 + + + 澶存枃浠 + + + 澶存枃浠 + + + 澶存枃浠 + + + 澶存枃浠 + + + 澶存枃浠 + + + 澶存枃浠 + + + 澶存枃浠 + + + 澶存枃浠 + + + 澶存枃浠 + + + 澶存枃浠 + + + 澶存枃浠 + + + 澶存枃浠 + + + + + 婧愭枃浠 + + + 婧愭枃浠 + + + 婧愭枃浠 + + + 婧愭枃浠 + + + 婧愭枃浠 + + + 婧愭枃浠 + + + 婧愭枃浠 + + + 婧愭枃浠 + + + 婧愭枃浠 + + + 婧愭枃浠 + + + 婧愭枃浠 + + + 婧愭枃浠 + + + 婧愭枃浠 + + + + + 璧勬簮鏂囦欢 + + + + + 璧勬簮鏂囦欢 + + + + + 璧勬簮鏂囦欢 + + + 璧勬簮鏂囦欢 + + + 璧勬簮鏂囦欢 + + + \ No newline at end of file diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/SectionCalculationDlg.cpp b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/SectionCalculationDlg.cpp new file mode 100644 index 0000000..15e5bdd --- /dev/null +++ b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/SectionCalculationDlg.cpp @@ -0,0 +1,718 @@ + +// SectionCalculationDlg.cpp : 实现文件 +// + +#include "stdafx.h" +#include "SectionCalculation.h" +#include "SectionCalculationDlg.h" +#include "afxdialogex.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + + +// 用于应用程序“关于”菜单项的 CAboutDlg 对话框 + +class CAboutDlg : public CDialogEx +{ +public: + CAboutDlg(); + +// 对话框数据 +#ifdef AFX_DESIGN_TIME + enum { IDD = IDD_ABOUTBOX }; +#endif + + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 + +// 实现 +protected: + DECLARE_MESSAGE_MAP() +}; + +CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX) +{ +} + +void CAboutDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); +} + +BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) +END_MESSAGE_MAP() + + +// CSectionCalculationDlg 对话框 + + + +CSectionCalculationDlg::CSectionCalculationDlg(CWnd* pParent /*=NULL*/) + : CDialogEx(IDD_SECTIONCALCULATION_DIALOG, pParent) +{ + m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); + ia = 0; + ib = 0; + ic = 0; + idd = 0; + ie = 0; +} + +void CSectionCalculationDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Control(pDX, IDC_TAB1, m_tab); +} + +BEGIN_MESSAGE_MAP(CSectionCalculationDlg, CDialogEx) + ON_WM_SYSCOMMAND() + ON_WM_PAINT() + ON_WM_QUERYDRAGICON() + ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, &CSectionCalculationDlg::OnSelchangeTab1) + ON_COMMAND(IDM_OPEN, &CSectionCalculationDlg::OnOpen) + ON_COMMAND(IDM_TXT, &CSectionCalculationDlg::OnTxt) + ON_COMMAND(IDM_DXF, &CSectionCalculationDlg::OnDxf) + ON_COMMAND(IDM_VCALC, &CSectionCalculationDlg::OnVcalc) + ON_COMMAND(IDM_HCALC, &CSectionCalculationDlg::OnHcalc) + ON_COMMAND(IDM_LIST, &CSectionCalculationDlg::OnList) + ON_COMMAND(IDM_DRAW, &CSectionCalculationDlg::OnDraw) + ON_COMMAND(IDM_REPORT, &CSectionCalculationDlg::OnReport) + ON_UPDATE_COMMAND_UI(IDM_TXT, &CSectionCalculationDlg::OnUpdateTxt) + ON_UPDATE_COMMAND_UI(IDM_DXF, &CSectionCalculationDlg::OnUpdateDxf) + ON_UPDATE_COMMAND_UI(IDM_VCALC, &CSectionCalculationDlg::OnUpdateVcalc) + ON_UPDATE_COMMAND_UI(IDM_HCALC, &CSectionCalculationDlg::OnUpdateHcalc) + ON_UPDATE_COMMAND_UI(IDM_DRAW, &CSectionCalculationDlg::OnUpdateDraw) + ON_UPDATE_COMMAND_UI(IDM_REPORT, &CSectionCalculationDlg::OnUpdateReport) + ON_WM_INITMENUPOPUP() + ON_NOTIFY_EX(TTN_NEEDTEXT, 0, OnToolTipNotify) + ON_COMMAND(IDM_ZOOM_IN, &CSectionCalculationDlg::OnZoomIn) + ON_UPDATE_COMMAND_UI(IDM_ZOOM_IN, &CSectionCalculationDlg::OnUpdateZoomIn) + ON_COMMAND(IDM_ZOOM_OUT, &CSectionCalculationDlg::OnZoomOut) + ON_UPDATE_COMMAND_UI(IDM_ZOOM_OUT, &CSectionCalculationDlg::OnUpdateZoomOut) +END_MESSAGE_MAP() + + +// CSectionCalculationDlg 消息处理程序 + +BOOL CSectionCalculationDlg::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + + // 将“关于...”菜单项添加到系统菜单中。 + m_toolbar.CreateEx(this); + m_toolbar.LoadToolBar(IDR_TOOLBAR1); + CRect rect1; + GetClientRect(&rect1); + m_toolbar.MoveWindow(0, 0, rect1.Width(), 50); + m_toolbar.EnableToolTips(TRUE); + + // IDM_ABOUTBOX 必须在系统命令范围内。 + ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); + ASSERT(IDM_ABOUTBOX < 0xF000); + + CMenu* pSysMenu = GetSystemMenu(FALSE); + if (pSysMenu != NULL) + { + BOOL bNameValid; + CString strAboutMenu; + bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); + ASSERT(bNameValid); + if (!strAboutMenu.IsEmpty()) + { + pSysMenu->AppendMenu(MF_SEPARATOR); + pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); + } + } + + // 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动 + // 执行此操作 + SetIcon(m_hIcon, TRUE); // 设置大图标 + SetIcon(m_hIcon, FALSE); // 设置小图标 + + // TODO: 在此添加额外的初始化代码 + m_tab.InsertItem(0, _T("表格")); + m_tab.InsertItem(1, _T("绘图")); + m_tab.InsertItem(2, _T("报表")); + + m_listDlg.Create(IDD_DLG_LIST, &m_tab); + m_drawDlg.Create(IDD_DLG_DRAW, &m_tab); + m_reportDlg.Create(IDD_DLG_REPORT, &m_tab); + + m_listDlg.ShowWindow(SW_SHOW); + m_drawDlg.ShowWindow(SW_HIDE); + m_reportDlg.ShowWindow(SW_HIDE); + + //获取tab控件的大小 + CRect rect; + m_tab.GetClientRect(&rect); + rect.top += 2; + rect.left += 1; + rect.right -= 2; + rect.bottom -= 22; + m_listDlg.MoveWindow(rect); + m_drawDlg.MoveWindow(rect); + m_reportDlg.MoveWindow(rect); + + return TRUE; // 除非将焦点设置到控件,否则返回 TRUE +} + +void CSectionCalculationDlg::OnSysCommand(UINT nID, LPARAM lParam) +{ + if ((nID & 0xFFF0) == IDM_ABOUTBOX) + { + CAboutDlg dlgAbout; + dlgAbout.DoModal(); + } + else + { + CDialogEx::OnSysCommand(nID, lParam); + } +} + +// 如果向对话框添加最小化按钮,则需要下面的代码 +// 来绘制该图标。 对于使用文档/视图模型的 MFC 应用程序, +// 这将由框架自动完成。 + +void CSectionCalculationDlg::OnPaint() +{ + if (IsIconic()) + { + CPaintDC dc(this); // 用于绘制的设备上下文 + + SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0); + + // 使图标在工作区矩形中居中 + int cxIcon = GetSystemMetrics(SM_CXICON); + int cyIcon = GetSystemMetrics(SM_CYICON); + CRect rect; + GetClientRect(&rect); + int x = (rect.Width() - cxIcon + 1) / 2; + int y = (rect.Height() - cyIcon + 1) / 2; + + // 绘制图标 + dc.DrawIcon(x, y, m_hIcon); + } + else + { + CDialogEx::OnPaint(); + } +} + +//当用户拖动最小化窗口时系统调用此函数取得光标 +//显示。 +HCURSOR CSectionCalculationDlg::OnQueryDragIcon() +{ + return static_cast(m_hIcon); +} + + + +void CSectionCalculationDlg::OnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult) +{ + int nSelect = m_tab.GetCurSel(); + if (nSelect == 0) + { + m_listDlg.ShowWindow(SW_SHOW); + m_drawDlg.ShowWindow(SW_HIDE); + m_reportDlg.ShowWindow(SW_HIDE); + } + if (nSelect == 1 && idd == 1) + { + m_listDlg.ShowWindow(SW_HIDE); + m_drawDlg.ShowWindow(SW_SHOW); + m_reportDlg.ShowWindow(SW_HIDE); + } + if (nSelect == 2 && ie == 1) + { + m_listDlg.ShowWindow(SW_HIDE); + m_drawDlg.ShowWindow(SW_HIDE); + m_reportDlg.ShowWindow(SW_SHOW); + } + *pResult = 0; +} + + +void CSectionCalculationDlg::OnOpen() +{ + if (false == m_fileOper.ReadData()) + { + ia = 0; + ib = 0; + ic = 0; + idd = 0; + ie = 0; + return; + } + m_listDlg.m_list.DeleteAllItems(); + CString str; + for (int i = 0; i < m_fileOper.OriPoint().size(); ++i) + { + m_listDlg.m_list.InsertItem(i, _T("")); + m_listDlg.m_list.SetItemText(i, 0, m_fileOper.OriPoint()[i].PointName()); + str.Format(_T("%lf"), m_fileOper.OriPoint()[i].X()); + m_listDlg.m_list.SetItemText(i, 1, str); + + str.Format(_T("%lf"), m_fileOper.OriPoint()[i].Y()); + m_listDlg.m_list.SetItemText(i, 2, str); + + str.Format(_T("%lf"), m_fileOper.OriPoint()[i].H()); + m_listDlg.m_list.SetItemText(i, 3, str); + } + ia = 1; + ib = 0; + ic = 0; + idd = 0; + m_listDlg.ShowWindow(SW_SHOW); + m_drawDlg.ShowWindow(SW_HIDE); + m_reportDlg.ShowWindow(SW_HIDE); + m_tab.SetCurSel(0); +} + + +void CSectionCalculationDlg::OnTxt() +{ + m_fileOper.WriteTXT(); +} + + +void CSectionCalculationDlg::OnDxf() +{ + DrawDxf(); +} + + +void CSectionCalculationDlg::OnVcalc() +{ + m_calcV.CalcVerticalSection(m_fileOper); + ia = 0; + ib = 1; + ic = 0; + idd = 0; + ie = 0; +} + + +void CSectionCalculationDlg::OnHcalc() +{ + m_calcH.CalcHorizonSection(m_fileOper); + ia = 0; + ib = 0; + ic = 1; + idd = 0; + ie = 0; +} + + +void CSectionCalculationDlg::OnList() +{ + m_listDlg.ShowWindow(SW_SHOW); + m_drawDlg.ShowWindow(SW_HIDE); + m_reportDlg.ShowWindow(SW_HIDE); + m_tab.SetCurSel(0); +} + + +void CSectionCalculationDlg::OnDraw() +{ + CZoomView::SetPoint(CZoomView::m_tempOriPoint, m_fileOper.OriPoint()); + CZoomView::SetPoint(CZoomView::m_tempKnowPoint, m_fileOper.KnowPoint()); + CZoomView::SetPoint(CZoomView::m_tempVInsertPoint, m_calcV.VInsertPoint()); + CZoomView::SetPoint(CZoomView::m_tempMInsertPoint, m_calcH.MHInsertPoint()); + CZoomView::SetPoint(CZoomView::m_tempNInsertPoint, m_calcH.NHInsertPoint()); + CZoomView::SetData(CZoomView::m_tempOriPoint); + m_listDlg.ShowWindow(SW_HIDE); + m_drawDlg.ShowWindow(SW_SHOW); + m_reportDlg.ShowWindow(SW_HIDE); + m_tab.SetCurSel(1); + idd = 1; +} + + +void CSectionCalculationDlg::OnReport() +{ + CString content = m_fileOper.s_verticalSectionContent + m_fileOper.s_horizonSectionContent; + m_reportDlg.m_edit.SetWindowTextW(content); + m_listDlg.ShowWindow(SW_HIDE); + m_drawDlg.ShowWindow(SW_HIDE); + m_reportDlg.ShowWindow(SW_SHOW); + m_tab.SetCurSel(2); + ie = 1; +} + + +void CSectionCalculationDlg::OnUpdateTxt(CCmdUI *pCmdUI) +{ + if (ic == 1) + pCmdUI->Enable(1); + else + pCmdUI->Enable(0); +} + + +void CSectionCalculationDlg::OnUpdateDxf(CCmdUI *pCmdUI) +{ + if (ic == 1) + pCmdUI->Enable(1); + else + pCmdUI->Enable(0); +} + + +void CSectionCalculationDlg::OnUpdateVcalc(CCmdUI *pCmdUI) +{ + if (ia == 1) + pCmdUI->Enable(1); + else + pCmdUI->Enable(0); +} + + +void CSectionCalculationDlg::OnUpdateHcalc(CCmdUI *pCmdUI) +{ + if (ib == 1) + pCmdUI->Enable(1); + else + pCmdUI->Enable(0); +} + + +void CSectionCalculationDlg::OnUpdateDraw(CCmdUI *pCmdUI) +{ + if (ic == 1) + pCmdUI->Enable(1); + else + pCmdUI->Enable(0); +} + + +void CSectionCalculationDlg::OnUpdateReport(CCmdUI *pCmdUI) +{ + if (ic == 1) + pCmdUI->Enable(1); + else + pCmdUI->Enable(0); +} + +void CSectionCalculationDlg::DrawDxf() +{ + if (false == m_dxf.Begin()) + return; + + //画坐标轴: 横轴都为1500, 纵轴为1500起 长度为500 + m_dxf.Line(0, 1500, 1500, 1500);//h + m_dxf.Line(0, 1500, 0, 2000);//v + //绘制刻度 + double dv = 500.0 / 3.0; + double dh = 1500.0 / 4.0; + double dX, dY; + CString str; + for (int i = 0; i < 4; ++i) + { + dX = dh * i; + dY = dv * i + 1500; + m_dxf.Line(0, dY, -10, dY);//v + m_dxf.Line(dX, 1500, dX, 1490);//h + str.Format(_T("%d"), 3350 + 20 * i); + m_dxf.Text(-80, dY, str); + str.Format(_T("%d"), 4490 + 20 * i); + m_dxf.Text(dX, 1470, str); + } + str.Format(_T("%d"), 4570); + m_dxf.Text(1500, 1470, str); + + //画第二个坐标轴 700z -- 1200 + m_dxf.Line(0, 700, 1500, 700); //h + m_dxf.Line(0, 700, 0, 1200); //z + dv = 500.0 / 5.0; + dh = 1500.0 / 5.0; + for (int i = 0; i < 6; ++i) + { + dY = dv * i + 700; + dX = dh * i; + m_dxf.Line(0, dY, -10, dY); //v + m_dxf.Line(dX, 700, dX, 690); //h + str.Format(_T("%d"), 10 + 2 * i); + m_dxf.Text(-80, dY, str); + str.Format(_T("%d"), 2 * i); + m_dxf.Text(dX, 670, str); + } + + //画第三个坐标轴 0-500 + m_dxf.Line(0, 0, 1500, 0); //h + m_dxf.Line(0, 0, 0, 500); //z + dv = 500.0 / 5.0; + dh = 1500.0 / 5.0; + for (int i = 0; i < 6; ++i) + { + dY = dv * i; + dX = dh * i; + m_dxf.Line(0, dY, -10, dY); //z + m_dxf.Line(dX, 0, dX, -10); //h + str.Format(_T("%d"), 10 + 2 * i); + m_dxf.Text(-80, dY, str); + str.Format(_T("%d"), 2 * i); + m_dxf.Text(dX, -30, str); + } + + //在第一个坐标系上展点 + for (int i = 0; i < m_fileOper.OriPoint().size(); ++i) + { + dX = (m_fileOper.OriPoint()[i].X() - 4490) * 1500 / (4570 - 4490); + dY = 1500 + (m_fileOper.OriPoint()[i].Y() - 3350) * 500 / (3410 - 3350); + m_dxf.Point(dX, dY); + } + for (int i = 0; i < 3; ++i) + { + dX = (m_fileOper.KnowPoint()[i].X() - 4490) * 1500 / (4570 - 4490); + dY = 1500 + (m_fileOper.KnowPoint()[i].Y() - 3350) * 500 / (3410 - 3350); + m_dxf.Point(dX, dY); + dY += 20; + m_dxf.Text(dX, dY, m_fileOper.KnowPoint()[i].PointName()); + } + dX = (m_fileOper.KnowPoint()[2].X() - 4490) * 1500 / (4570 - 4490); + dY = 1500 + (m_fileOper.KnowPoint()[2].Y() - 3350) * 500 / (3410 - 3350); + double dX1, dY1; + dX1 = (m_fileOper.KnowPoint()[0].X() - 4490) * 1500 / (4570 - 4490); + dY1 = 1500 + (m_fileOper.KnowPoint()[0].Y() - 3350) * 500 / (3410 - 3350); + m_dxf.Line(dX, dY, dX1, dY1); + + //绘制M点 + dX = (m_calcH.MHInsertPoint()[5].X() - 4490) * 1500 / (4570 - 4490); + dY = 1500 + (m_calcH.MHInsertPoint()[5].Y() - 3350) * 500 / (3410 - 3350) + 20; + m_dxf.Text(dX, dY, m_calcH.MHInsertPoint()[5].PointName()); + + //绘制N点 + dX = (m_calcH.NHInsertPoint()[5].X() - 4490) * 1500.0 / (4570 - 4490); + dY = 1500 + (m_calcH.NHInsertPoint()[5].Y() - 3350) * 500.0 / (3410 - 3350) + 20; + m_dxf.Text(dX, dY, m_calcH.NHInsertPoint()[5].PointName()); + + //画出M线 + dX = (m_calcH.MHInsertPoint()[10].X() - 4490) * 1500.0 / (4570 - 4490); + dY = 1500 + (m_calcH.MHInsertPoint()[10].Y() - 3350) * 500.0 / (3410 - 3350); + dX1 = (m_calcH.MHInsertPoint()[0].X() - 4490) * 1500.0 / (4570 - 4490); + dY1 = 1500 + (m_calcH.MHInsertPoint()[0].Y() - 3350) * 500.0 / (3410 - 3350); + m_dxf.Line(dX, dY, dX1, dY1); + + //画出N线 + dX = (m_calcH.NHInsertPoint()[10].X() - 4490) * 1500.0 / (4570 - 4490); + dY = 1500 + (m_calcH.NHInsertPoint()[10].Y() - 3350) * 500.0 / (3410 - 3350); + dX1 = (m_calcH.NHInsertPoint()[0].X() - 4490) * 1500.0 / (4570 - 4490); + dY1 = 1500 + (m_calcH.NHInsertPoint()[0].Y() - 3350) * 500.0 / (3410 - 3350); + m_dxf.Line(dX, dY, dX1, dY1); + + //画纵断面 + for (int i = 0; i < m_calcV.VInsertPoint().size() - 1; ++i) + { + dX = i * 1500.0 / 10.0; + dY = 700 + (m_calcV.VInsertPoint()[i].H() - 10) * 500.0 / 10.0; + dX1 = (i + 1) * 1500 / 10.0; + dY1 = 700 + (m_calcV.VInsertPoint()[i + 1].H() - 10) * 500.0 / 10.0; + m_dxf.Point(dX, dY); + m_dxf.Line(dX, dY, dX1, dY1); + } + + //画M横断面线 + for (int i = 0; i < 10; ++i) + { + dX = i * 1500.0 / 10.0; + dY = (m_calcH.MHInsertPoint()[i].H() - 10) * 500.0 / 10.0; + dX1 = (i + 1) * 1500.0 / 10.0; + dY1 = (m_calcH.MHInsertPoint()[i + 1].H() - 10) * 500.0 / 10.0; + m_dxf.Point(dX, dY); + m_dxf.Line(dX, dY, dX1, dY1); + } + + //画N横断面线 + for (int i = 0; i < 10; ++i) + { + dX = i * 1500.0 / 10.0; + dY = (m_calcH.NHInsertPoint()[i].H() - 10) * 500.0 / 10.0; + dX1 = (i + 1) * 1500.0 / 10.0; + dY1 = (m_calcH.NHInsertPoint()[i + 1].H() - 10) * 500.0 / 10.0; + m_dxf.Point(dX, dY); + m_dxf.Line(dX, dY, dX1, dY1); + } + m_dxf.End(); +} + + +void CSectionCalculationDlg::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu) +{ + CDialog::OnInitMenuPopup(pPopupMenu, nIndex, bSysMenu); + + // TODO: Add your message handler code here + + + ASSERT(pPopupMenu != NULL); + // Check the enabled state of various menu items. + CCmdUI state; + state.m_pMenu = pPopupMenu; + ASSERT(state.m_pOther == NULL); + ASSERT(state.m_pParentMenu == NULL); + // Determine if menu is popup in top-level menu and set m_pOther to + // it if so (m_pParentMenu == NULL indicates that it is secondary popup). + HMENU hParentMenu; + if (AfxGetThreadState()->m_hTrackingMenu == pPopupMenu->m_hMenu) + state.m_pParentMenu = pPopupMenu; // Parent == child for tracking popup. + else if ((hParentMenu = ::GetMenu(m_hWnd)) != NULL) + { + CWnd* pParent = this; + // Child windows don't have menus--need to go to the top! + if (pParent != NULL && + (hParentMenu = ::GetMenu(pParent->m_hWnd)) != NULL) + { + int nIndexMax = ::GetMenuItemCount(hParentMenu); + for (int nIndex = 0; nIndex < nIndexMax; nIndex++) + { + if (::GetSubMenu(hParentMenu, nIndex) == pPopupMenu->m_hMenu) + { + // When popup is found, m_pParentMenu is containing menu. + state.m_pParentMenu = CMenu::FromHandle(hParentMenu); + break; + } + } + } + } + state.m_nIndexMax = pPopupMenu->GetMenuItemCount(); + for (state.m_nIndex = 0; state.m_nIndex < state.m_nIndexMax; + state.m_nIndex++) + { + state.m_nID = pPopupMenu->GetMenuItemID(state.m_nIndex); + if (state.m_nID == 0) + continue; // Menu separator or invalid cmd - ignore it. + ASSERT(state.m_pOther == NULL); + ASSERT(state.m_pMenu != NULL); + if (state.m_nID == (UINT)-1) + { + // Possibly a popup menu, route to first item of that popup. + state.m_pSubMenu = pPopupMenu->GetSubMenu(state.m_nIndex); + if (state.m_pSubMenu == NULL || + (state.m_nID = state.m_pSubMenu->GetMenuItemID(0)) == 0 || + state.m_nID == (UINT)-1) + { + continue; // First item of popup can't be routed to. + } + state.DoUpdate(this, TRUE); // Popups are never auto disabled. + } + else + { + // Normal menu item. + // Auto enable/disable if frame window has m_bAutoMenuEnable + // set and command is _not_ a system command. + state.m_pSubMenu = NULL; + state.DoUpdate(this, FALSE); + } + // Adjust for menu deletions and additions. + UINT nCount = pPopupMenu->GetMenuItemCount(); + if (nCount < state.m_nIndexMax) + { + state.m_nIndex -= (state.m_nIndexMax - nCount); + while (state.m_nIndex < nCount && + pPopupMenu->GetMenuItemID(state.m_nIndex) == state.m_nID) + { + state.m_nIndex++; + } + } + state.m_nIndexMax = nCount; + } +} + + +BOOL CSectionCalculationDlg::OnToolTipNotify(UINT id, NMHDR * pNMHDR, LRESULT * pResult) +{ + TOOLTIPTEXT* pT = (TOOLTIPTEXT*)pNMHDR; //将pNMHDR转换成TOOLTIPTEXT指针类型数据 + + UINT nID = pNMHDR->idFrom; //获取工具条上按钮的ID + + if (nID == IDM_OPEN) //如果nID是希望获取的ID,那么就设置相应提示信息到TOOLTIPTEXT结构体的lpszText中。 + { + pT->lpszText = _T("打开文件"); + pT->hinst = AfxGetResourceHandle(); + return(TRUE); + } + if (nID == IDM_VCALC) + { + pT->lpszText = _T("计算纵断面的信息"); + pT->hinst = AfxGetResourceHandle(); + return(TRUE); + } + if (nID == IDM_HCALC) + { + pT->lpszText = _T("计算纵断面的信息"); + pT->hinst = AfxGetResourceHandle(); + return(TRUE); + } + if (nID == IDM_DRAW) + { + pT->lpszText = _T("图形界面"); + pT->hinst = AfxGetResourceHandle(); + return(TRUE); + } + if (nID == IDM_REPORT) + { + pT->lpszText = _T("结果报表"); + pT->hinst = AfxGetResourceHandle(); + return(TRUE); + } + return FALSE; +} + +void CSectionCalculationDlg::OnZoomIn() +{ + CZoomView::WheelScale(120); + Invalidate(); +} + + +void CSectionCalculationDlg::OnUpdateZoomIn(CCmdUI *pCmdUI) +{ + if (idd == 1) + pCmdUI->Enable(1); + else + pCmdUI->Enable(0); +} + + +void CSectionCalculationDlg::OnZoomOut() +{ + CZoomView::WheelScale(-120); + Invalidate(); +} + + +void CSectionCalculationDlg::OnUpdateZoomOut(CCmdUI *pCmdUI) +{ + if (idd == 1) + pCmdUI->Enable(1); + else + pCmdUI->Enable(0); +} + + +BOOL CSectionCalculationDlg::ContinueModal() +{ + if (m_toolbar.IsWindowVisible()) // 如果对话框有工具栏,m_ToolBar为工具栏 + { + CFrameWnd* pParent = (CFrameWnd*)m_toolbar.GetParent(); + if (pParent) + m_toolbar.OnUpdateCmdUI(pParent, (WPARAM)TRUE); + } + + CMenu* pMainMenu = GetMenu(); // 如果对话框存在菜单,更新菜单 + CCmdUI cmdUI; + for (UINT n = 0; n < pMainMenu->GetMenuItemCount(); ++n) + { + CMenu* pSubMenu = pMainMenu->GetSubMenu(n); + cmdUI.m_nIndexMax = pSubMenu->GetMenuItemCount(); + for (UINT i = 0; i < cmdUI.m_nIndexMax; ++i) + { + cmdUI.m_nIndex = i; + cmdUI.m_nID = pSubMenu->GetMenuItemID(i); + cmdUI.m_pMenu = pSubMenu; + cmdUI.DoUpdate(this, FALSE); + } + } + return CDialog::ContinueModal(); +} diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/SectionCalculationDlg.h b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/SectionCalculationDlg.h new file mode 100644 index 0000000..306c5e5 --- /dev/null +++ b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/SectionCalculationDlg.h @@ -0,0 +1,80 @@ + +// SectionCalculationDlg.h : 头文件 +// + +#pragma once +#include "afxcmn.h" +#include "ListDlg.h" +#include "DrawDlg.h" +#include "ReportDlg.h" +#include "HorizonSectionCalc.h" +#include "VerticalSectionCalc.h" +#include "DxfFile.h" + +// CSectionCalculationDlg 对话框 +class CSectionCalculationDlg : public CDialogEx +{ +// 构造 +public: + CSectionCalculationDlg(CWnd* pParent = NULL); // 标准构造函数 + +// 对话框数据 +#ifdef AFX_DESIGN_TIME + enum { IDD = IDD_SECTIONCALCULATION_DIALOG }; +#endif + + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 + + +// 实现 +protected: + HICON m_hIcon; + + // 生成的消息映射函数 + virtual BOOL OnInitDialog(); + afx_msg void OnSysCommand(UINT nID, LPARAM lParam); + afx_msg void OnPaint(); + afx_msg HCURSOR OnQueryDragIcon(); + DECLARE_MESSAGE_MAP() +public: + afx_msg void OnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult); + afx_msg void OnOpen(); + afx_msg void OnTxt(); + afx_msg void OnDxf(); + afx_msg void OnVcalc(); + afx_msg void OnHcalc(); + afx_msg void OnList(); + afx_msg void OnDraw(); + afx_msg void OnReport(); + afx_msg void OnUpdateTxt(CCmdUI *pCmdUI); + afx_msg void OnUpdateDxf(CCmdUI *pCmdUI); + afx_msg void OnUpdateVcalc(CCmdUI *pCmdUI); + afx_msg void OnUpdateHcalc(CCmdUI *pCmdUI); + afx_msg void OnUpdateDraw(CCmdUI *pCmdUI); + afx_msg void OnUpdateReport(CCmdUI *pCmdUI); + afx_msg void OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu); + afx_msg BOOL OnToolTipNotify(UINT id, NMHDR * pNMHDR, LRESULT * pResult); + afx_msg void OnZoomIn(); + afx_msg void OnUpdateZoomIn(CCmdUI *pCmdUI); + afx_msg void OnZoomOut(); + afx_msg void OnUpdateZoomOut(CCmdUI *pCmdUI); + virtual BOOL ContinueModal(); + +private: + void DrawDxf(); +public: + CTabCtrl m_tab; + CToolBar m_toolbar; + CListDlg m_listDlg; + CDrawDlg m_drawDlg; + CReportDlg m_reportDlg; + + CFileOperation m_fileOper; + CHorizonSectionCalc m_calcH; + CVerticalSectionCalc m_calcV; + CDxfFile m_dxf; + +private: + int ia, ib, ic, idd, ie; //开关 +}; diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/VerticalSectionCalc.cpp b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/VerticalSectionCalc.cpp new file mode 100644 index 0000000..441eeca --- /dev/null +++ b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/VerticalSectionCalc.cpp @@ -0,0 +1,119 @@ +#include "stdafx.h" +#include "VerticalSectionCalc.h" + + +CVerticalSectionCalc::CVerticalSectionCalc() +{ + detta = 10; + a1 = 0; + a2 = 0; //方位角 + m_vTotalLength = 0; //纵断面的全长 + m_vTotalLength1 = 0; //纵断面的第一段的长度 + m_vCount1 = 0; //纵断面第一段插值点的个数 + m_vCount = 0; //纵断面插值点的个数,再加上.3个已知点的总个数 + m_vTotalArea = 0; //纵断面的总面积 +} + + +CVerticalSectionCalc::~CVerticalSectionCalc() +{ +} + +void CVerticalSectionCalc::CalcVerticalSection(CFileOperation fileOper) +{ + m_fileOper = fileOper; + m_pOripoint.clear(); + m_pOripoint = m_fileOper.OriPoint(); + m_pKnowpoint.clear(); + m_pKnowpoint = m_fileOper.KnowPoint(); + + m_pVInsertPoint.clear(); + + a1 = m_fileOper.m_basicCalc.Azimuth(m_pKnowpoint[0].X(), m_pKnowpoint[0].Y(), m_pKnowpoint[1].X(), m_pKnowpoint[1].Y()); + a2 = m_fileOper.m_basicCalc.Azimuth(m_pKnowpoint[1].X(), m_pKnowpoint[1].Y(), m_pKnowpoint[2].X(), m_pKnowpoint[2].Y()); + m_vTotalLength1 = m_fileOper.m_basicCalc.Distance(m_pKnowpoint[0].X(), m_pKnowpoint[0].Y(), m_pKnowpoint[1].X(), m_pKnowpoint[1].Y()); + m_vTotalLength = m_vTotalLength1 + m_fileOper.m_basicCalc.Distance(m_pKnowpoint[1].X(), m_pKnowpoint[1].Y(), m_pKnowpoint[2].X(), m_pKnowpoint[2].Y()); + m_vCount1 = (int)(m_vTotalLength1 / detta); + m_vCount = (int)(m_vTotalLength / detta) + 3; // 加上三个已知点 + + CalcInsertPointPosition(); + CalcHeight(); + CalcArea(); + AfxMessageBox(_T("纵断面 计算完成!!")); + + WriteData(m_fileOper.s_verticalSectionContent); +} + +void CVerticalSectionCalc::CalcInsertPointPosition() +{ + m_pVInsertPoint.push_back(CPointInfo(m_pKnowpoint[0].PointName(), m_pKnowpoint[0].X(), m_pKnowpoint[0].Y(), m_pKnowpoint[0].H())); + double dX, dY, dK; + CString str; + for (int i = 0; i < m_vCount1; ++i) + { + str.Format(_T("V-%d"), i + 1); + dX = m_pKnowpoint[0].X() + detta * (i + 1) * cos(a1); + dY = m_pKnowpoint[0].Y() + detta * (i + 1) * sin(a1); + dK = (i + 1) * detta; + m_pVInsertPoint.push_back(CPointInfo(str, dX, dY, 0, dK)); + } + m_pVInsertPoint.push_back(CPointInfo(m_pKnowpoint[1].PointName(), m_pKnowpoint[1].X(), m_pKnowpoint[1].Y(), m_pKnowpoint[1].H(), m_vTotalLength1)); + + double dis = m_fileOper.m_basicCalc.Distance(m_pVInsertPoint[m_vCount1].X(), m_pVInsertPoint[m_vCount1].Y(), m_pKnowpoint[1].X(), m_pKnowpoint[1].Y()); + for (int i = m_vCount1; i < m_vCount - 3; ++i) + { + str.Format(_T("V-%d"), i + 1); + dX = m_pKnowpoint[1].X() + (detta - dis + detta * (i - m_vCount1)) * cos(a2); + dY = m_pKnowpoint[1].Y() + (detta - dis + detta * (i - m_vCount1)) * sin(a2); + dK = (i + 1) * detta; + m_pVInsertPoint.push_back(CPointInfo(str, dX, dY, 0, dK)); + } + m_pVInsertPoint.push_back(CPointInfo(m_pKnowpoint[2].PointName(), m_pKnowpoint[2].X(), m_pKnowpoint[2].Y(), m_pKnowpoint[2].H(), m_vTotalLength)); +} + +void CVerticalSectionCalc::CalcHeight() +{ + m_fileOper.m_basicCalc.CalcHeight(m_pOripoint, m_pVInsertPoint); + m_pVInsertPoint[0].SetH(m_pKnowpoint[0].H()); + m_pVInsertPoint[m_vCount1 + 1].SetH(m_pKnowpoint[1].H()); + m_pVInsertPoint[m_vCount - 1].SetH(m_pKnowpoint[2].H()); +} + +void CVerticalSectionCalc::CalcArea() +{ + m_vTotalArea = 0; + double H0 = m_fileOper.H0(); + for (int i = 0; i < m_pVInsertPoint.size() - 1; ++i) + { + m_vTotalArea += (m_pVInsertPoint[i].H() + m_pVInsertPoint[i + 1].H() - 2.0 * H0) + / 2.0 * m_fileOper.m_basicCalc.Distance(m_pVInsertPoint[i].X(), m_pVInsertPoint[i].Y(), m_pVInsertPoint[i + 1].X(), m_pVInsertPoint[i + 1].Y()); + } +} + +void CVerticalSectionCalc::WriteData(CString &content) +{ + content = _T(""); + setlocale(LC_ALL, ""); + CString str; + content += _T("纵断面信息\r\n"); + content += _T("------------------------------------------------------------------------------------\r\n"); + if (m_pVInsertPoint.size() > 0) + { + str.Format(_T("纵断面面积:%.3lf\r\n"), m_vTotalArea); + content += str; + str.Format(_T("纵断面全长:%.3lf\r\n"), m_vTotalLength); + content += str; + content += _T("线路主点\r\n"); + content += _T("点名\t里程K(m) X坐标(m)\tY坐标(m)\tH坐标(m)\r\n"); + for (int i = 0; i < m_pVInsertPoint.size(); ++i) + { + str.Format(_T("%s\t%.3lf\t%.3lf\t%.3lf\t%.3lf\r\n"), m_pVInsertPoint[i].PointName(), m_pVInsertPoint[i].K(), m_pVInsertPoint[i].X(), m_pVInsertPoint[i].Y(), m_pVInsertPoint[i].H()); + content += str; + } + } +} + +std::vector CVerticalSectionCalc::VInsertPoint() const +{ + return m_pVInsertPoint; +} diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/VerticalSectionCalc.h b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/VerticalSectionCalc.h new file mode 100644 index 0000000..76e8071 --- /dev/null +++ b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/VerticalSectionCalc.h @@ -0,0 +1,56 @@ +/****************************************************************************** + +版权所有 (C), 2018-2020, + +****************************************************************************** +文 件 名 : VerticalSectionCalc.h +版 本 号 : 初稿 +作 者 : +生成日期 : 2018年10月26日 +最近修改 : +功能描述 : 纵断面的计算。K0, K1,K2是道路中心线上的3个关键点,过这3个点构建纵断面。 +函数列表 : +* +* + +修改历史 : +1.日 期 : 2018年10月26日 +作 者 : +修改内容 : 创建文件 + +******************************************************************************/ +#pragma once +#include "FileOperation.h" + +class CVerticalSectionCalc +{ +public: + CVerticalSectionCalc(); + ~CVerticalSectionCalc(); + + void CalcVerticalSection(CFileOperation fileOper); //计算纵断面信息 +private: + void CalcInsertPointPosition(); //计算纵断面插入点的信息 + void CalcHeight(); //计算高程 + void CalcArea(); //计算面积 + void WriteData(CString &content); + +public: + std::vector VInsertPoint() const; + +private: + std::vector m_pVInsertPoint; //纵断面的插值点 + CFileOperation m_fileOper; + std::vector m_pOripoint; + std::vector m_pKnowpoint; + +private: + double detta; //插值的间距 + double a1, a2; //方位角 + double m_vTotalLength; //纵断面的全长 + double m_vTotalLength1; //纵断面的第一段的长度 + int m_vCount1; //纵断面第一段插值点的个数 + int m_vCount; //纵断面插值点的个数,再加上.3个已知点的总个数 + double m_vTotalArea; //纵断面的总面积 +}; + diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/ZoomView.cpp b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/ZoomView.cpp new file mode 100644 index 0000000..1d1bf7c --- /dev/null +++ b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/ZoomView.cpp @@ -0,0 +1,319 @@ +#include "stdafx.h" +#include "ZoomView.h" + +std::vector CZoomView::m_tempOriPoint; +std::vector CZoomView::m_tempKnowPoint; +std::vector CZoomView::m_tempVInsertPoint; +std::vector CZoomView::m_tempMInsertPoint; +std::vector CZoomView::m_tempNInsertPoint; + +CCoorPoint CZoomView::m_dataCenterPoint; +CCoorPoint CZoomView::m_screenCenterPoint; +CCoorPoint CZoomView::m_mousePosition; +double CZoomView::m_dataHeight = 1; +double CZoomView::m_dataWidth = 1; +double CZoomView::m_dataScale = 1; +double CZoomView::m_scrollScale = 1; + +CCoorPoint::CCoorPoint() +{ + m_x = 0; + m_y = 0; + m_h = 0; + m_name = _T(""); +} + +CCoorPoint::~CCoorPoint() +{ +} + +void CCoorPoint::Move(double x, double y) +{ + m_x += x; + m_y += y; +} + +void CCoorPoint::SetPoint(double x, double y) +{ + m_x = x; + m_y = y; +} + + +CZoomView::CZoomView() +{ +} + + +CZoomView::~CZoomView() +{ +} + +void CZoomView::SetData(std::vector data) +{ + double minX, minY, maxX, maxY; + minX = data[0].m_x; + minY = data[0].m_y; + maxX = data[0].m_x; + maxY = data[0].m_y; + + for (int i = 0; i < data.size(); ++i) + { + if (minX > data[i].m_x) + minX = data[i].m_x; + if (minY > data[i].m_y) + minY = data[i].m_y; + if (maxX < data[i].m_x) + maxX = data[i].m_x; + if (maxY < data[i].m_y) + maxY = data[i].m_y; + } + m_dataWidth = maxX - minX; + m_dataHeight = maxY - minY; + m_dataCenterPoint.SetPoint((minX + maxX) / 2.0, (minY + maxY) / 2.0); +} + +void CZoomView::SetScreenPoint(double height, double width) +{ + m_screenCenterPoint.SetPoint(height / 2.0, width / 2.0); + double x_scale, y_scale; + x_scale = m_dataWidth / width; + y_scale = m_dataHeight / height; + if (x_scale > y_scale) + m_dataScale = x_scale; + else + m_dataScale = y_scale; + m_dataScale *= 100; +} + +void CZoomView::WheelScale(int zDelta) +{ + m_scrollScale *= (1.0 - 0.2 * zDelta / 120.0); +} + +void CZoomView::CoorMove(int x, int y, int nflags) +{ + double deltaX, deltaY; + if (nflags == 1) + { + deltaX = m_mousePosition.m_x - x; + deltaY = y - m_mousePosition.m_y; + m_dataCenterPoint.Move(deltaX * m_scrollScale * m_dataScale, deltaY * m_scrollScale * m_dataScale); + } + m_mousePosition.SetPoint(x, y); +} + +double CZoomView::SetX(double x) +{ + double dx = (x - m_dataCenterPoint.m_x) / (m_scrollScale * m_dataScale) + m_screenCenterPoint.m_x; + return dx; +} + +double CZoomView::SetY(double y) +{ + double dy = (m_dataCenterPoint.m_y - y) / (m_scrollScale * m_dataScale) + m_screenCenterPoint.m_y; + return dy; +} + +void CZoomView::Draw(CDC & dc) +{ + DrawFirstChart(dc); + DrawSection(dc, m_tempVInsertPoint, 0); + DrawSection(dc, m_tempMInsertPoint, 50); + DrawSection(dc, m_tempNInsertPoint, 50); +} + +void CZoomView::SetPoint(std::vector& m_tempOriPoint, std::vector data) +{ + m_tempOriPoint.clear(); + CCoorPoint temp; + for (int i = 0; i < data.size(); ++i) + { + temp.m_name = data[i].PointName(); + temp.m_x = data[i].X(); + temp.m_y = data[i].Y(); + temp.m_h = data[i].H(); + m_tempOriPoint.push_back(temp); + } +} + +void CZoomView::DrawFirstChart(CDC &dc) +{ + //画坐标轴 + double x1, y1, x2, y2; + x1 = SetX(4490); + y1 = SetY(3350) * 0.5; + dc.MoveTo(x1, y1); + x2 = SetX(4580); + y2 = SetY(3420) * 0.5; + dc.LineTo(x1, y2); + dc.MoveTo(x1, y1); + dc.LineTo(x2, y1); + //画刻度 + for (int i = 0; i < 5; ++i) + { + x1 = SetX(i * 20 + 4490); + y2 = y1 + 5; + dc.MoveTo(x1, y1); + dc.LineTo(x1, y2); + } + for (int i = 0; i < 4; ++i) + { + x1 = SetX(4490); + x2 = x1 - 5; + y1 = SetY(3350 + i * 20) * 0.5; + dc.MoveTo(x1, y1); + dc.LineTo(x2, y1); + } + //展点 + CBrush brush; + brush.CreateSolidBrush(RGB(0, 0, 0)); + dc.SelectObject(&brush); + for (int i = 0; i < m_tempOriPoint.size(); ++i) + { + x1 = SetX(m_tempOriPoint[i].m_x); + y1 = SetY(m_tempOriPoint[i].m_y) * 0.5; + dc.Ellipse(x1 - 3, y1 - 3, x1 + 3, y1 + 3); + } + for (int i = 0; i < m_tempKnowPoint.size(); ++i) + { + x1 = SetX(m_tempKnowPoint[i].m_x); + y1 = SetY(m_tempKnowPoint[i].m_y) * 0.5; + dc.Rectangle(x1 - 5, y1 - 5, x1 + 5, y1 + 5); + } + x1 = SetX(m_tempMInsertPoint[5].m_x); + y1 = SetY(m_tempMInsertPoint[5].m_y) * 0.5; + dc.Rectangle(x1 - 5, y1 - 5, x1 + 5, y1 + 5); + x1 = SetX(m_tempNInsertPoint[5].m_x); + y1 = SetY(m_tempNInsertPoint[5].m_y) * 0.5; + dc.Rectangle(x1 - 5, y1 - 5, x1 + 5, y1 + 5); + //画线 + CPen pen; + dc.SelectObject(&pen); + for (int i = 0; i < m_tempKnowPoint.size() - 1; ++i) + { + x1 = SetX(m_tempKnowPoint[i].m_x); + y1 = SetY(m_tempKnowPoint[i].m_y) * 0.5; + x2 = SetX(m_tempKnowPoint[i + 1].m_x); + y2 = SetY(m_tempKnowPoint[i + 1].m_y) * 0.5; + dc.MoveTo(x1, y1); + dc.LineTo(x2, y2); + } + x1 = SetX(m_tempMInsertPoint[0].m_x); + y1 = SetY(m_tempMInsertPoint[0].m_y) * 0.5; + x2 = SetX(m_tempMInsertPoint[10].m_x); + y2 = SetY(m_tempMInsertPoint[10].m_y) * 0.5; + dc.MoveTo(x1, y1); + dc.LineTo(x2, y2); + x1 = SetX(m_tempNInsertPoint[0].m_x); + y1 = SetY(m_tempNInsertPoint[0].m_y) * 0.5; + x2 = SetX(m_tempNInsertPoint[10].m_x); + y2 = SetY(m_tempNInsertPoint[10].m_y) * 0.5; + dc.MoveTo(x1, y1); + dc.LineTo(x2, y2); + + //写刻度,写点名 + CFont font; + font.CreatePointFont(70, _T("楷体")); + dc.SelectObject(&font); + for (int i = 0; i < m_tempKnowPoint.size(); ++i) + { + x1 = SetX(m_tempKnowPoint[i].m_x); + y1 = SetY(m_tempKnowPoint[i].m_y) * 0.5; + dc.TextOut(x1, y1 - 15, m_tempKnowPoint[i].m_name); + } + x1 = SetX(m_tempMInsertPoint[5].m_x); + y1 = SetY(m_tempMInsertPoint[5].m_y) * 0.5; + dc.TextOut(x1, y1 - 15, m_tempMInsertPoint[5].m_name); + x1 = SetX(m_tempNInsertPoint[5].m_x); + y1 = SetY(m_tempNInsertPoint[5].m_y) * 0.5; + dc.TextOut(x1, y1 - 15, m_tempNInsertPoint[5].m_name); + CString str; + for (int i = 0; i < 5; ++i) + { + x1 = SetX(i * 20 + 4490); + y1 = SetY(3350) * 0.5; + str.Format(_T("%d"), 4490 + i * 20); + dc.TextOut(x1, y1 + 15, str); + } + for (int i = 0; i < 4; ++i) + { + x1 = SetX(4490); + y1 = SetY(3350 + i * 20) * 0.5; + str.Format(_T("%d"), 3350 + i * 20); + dc.TextOut(x1 - 30, y1, str); + } + x1 = SetX(4530); + y1 = SetY(3415) * 0.5; + str.Format(_T("道路基本情况图")); + dc.TextOut(x1, y1, str); + + y1 = SetY(3330) * 0.5; + str.Format(_T("纵断面示意图")); + dc.TextOut(x1, y1, str); + + y1 = SetY(3280) * 0.5; + str.Format(_T("横断面示意图")); + dc.TextOut(x1, y1, str); +} + +void CZoomView::DrawSection(CDC &dc, std::vector pt, double delta) +{ + //画坐标轴 + double x1, y1, x2, y2; + x1 = SetX(4490); + y1 = SetY(3300 - delta) * 0.5; + dc.MoveTo(x1, y1); + x2 = SetX(4580); + y2 = SetY(3330 - delta) * 0.5; + dc.LineTo(x1, y2); + dc.MoveTo(x1, y1); + dc.LineTo(x2, y1); + //画刻度 + for (int i = 0; i < 5; ++i) + { + x1 = SetX(i * 20 + 4490); + y2 = y1 + 5; + dc.MoveTo(x1, y1); + dc.LineTo(x1, y2); + } + for (int i = 0; i < 6; ++i) + { + x1 = SetX(4490); + x2 = x1 - 5; + y1 = SetY(3300 - delta + i * 6) * 0.5; + dc.MoveTo(x1, y1); + dc.LineTo(x2, y1); + } + double d; + for (int i = 0; i < pt.size() - 1; ++i) + { + d = (4570.0 - 4490.0) / 10.0; + x1 = SetX(i * d + 4490); + y1 = SetY((pt[i].m_h - 10.0) * 3 + 3300 - delta) * 0.5; + x2 = SetX((i + 1) * d + 4490); + y2 = SetY((pt[i + 1].m_h - 10.0) * 3 + 3300 - delta) * 0.5; + dc.MoveTo(x1, y1); + dc.LineTo(x2, y2); + } + //写刻度 + CFont font; + font.CreatePointFont(70, _T("楷体")); + dc.SelectObject(&font); + CString str; + for (int i = 0; i < 5; ++i) + { + x1 = SetX(i * 20 + 4490); + y1 = SetY(3300 - delta) * 0.5; + str.Format(_T("%d"), i * 2); + dc.TextOut(x1, y1 + 8, str); + } + for (int i = 0; i < 6; ++i) + { + x1 = SetX(4490); + y1 = SetY(3300 - delta + i * 6) * 0.5; + str.Format(_T("%d"), 10 + i * 2); + dc.TextOut(x1 - 15, y1, str); + } +} + diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/ZoomView.h b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/ZoomView.h new file mode 100644 index 0000000..4f153fd --- /dev/null +++ b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/ZoomView.h @@ -0,0 +1,75 @@ +/****************************************************************************** + +版权所有 (C), 2018-2020, + +****************************************************************************** +文 件 名 : ZoomView.h +版 本 号 : 初稿 +作 者 : +生成日期 : 2018年10月26日 +最近修改 : +功能描述 : 实现图像的放大、缩小等功能 +函数列表 : +* +* + +修改历史 : +1.日 期 : 2018年10月26日 +作 者 : +修改内容 : 创建文件 + +******************************************************************************/ +#pragma once +#include "HorizonSectionCalc.h" +#include "VerticalSectionCalc.h" +#include + +class CCoorPoint +{ +public: + CCoorPoint(); + ~CCoorPoint(); +public: + void Move(double x, double y); //点的移动 + void SetPoint(double x, double y); //设置点的值 + double m_x, m_y, m_h; + CString m_name; +}; + +class CZoomView +{ +public: + CZoomView(); + ~CZoomView(); +public: + static void SetData(std::vector data); //求取屏幕上点的分布数据 + static void SetScreenPoint(double height, double width); //设置屏幕数据 + static void WheelScale(int zDelta); //设置缩放比例 + static void CoorMove(int x, int y, int nflags); //点位的移动 + static double SetX(double x); //设置点在当前情况下的X坐标 + static double SetY(double y); //设置点在当前情况下的Y坐标 + + static void Draw(CDC &dc); + static void SetPoint(std::vector &m_tempOriPoint, std::vector data); + +private: + static void DrawFirstChart(CDC &dc); + static void DrawSection(CDC &dc, std::vector pt, double delta); + +public: + static std::vector m_tempOriPoint; + static std::vector m_tempKnowPoint; + static std::vector m_tempVInsertPoint; + static std::vector m_tempMInsertPoint; + static std::vector m_tempNInsertPoint; + + static CCoorPoint m_dataCenterPoint; + static CCoorPoint m_screenCenterPoint; + static CCoorPoint m_mousePosition; + + static double m_dataHeight; + static double m_dataWidth; + static double m_dataScale; + static double m_scrollScale; +}; + diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/res/SectionCalculation.ico b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/res/SectionCalculation.ico new file mode 100644 index 0000000000000000000000000000000000000000..d56fbcdfdf6eac0f4727c34770c26689271d96af GIT binary patch literal 67777 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 NK9A-8OQnhX{{?OVn?wKr literal 0 HcmV?d00001 diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/res/SectionCalculation.rc2 b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/res/SectionCalculation.rc2 new file mode 100644 index 0000000000000000000000000000000000000000..68f10029bb264903128e21c9034b6e202c811da6 GIT binary patch literal 692 zcmezWPoF`bftP^`Na`~vFa$HCG9)vUFk~|1GvqNiGbA$P0QsdrG7&DS#}EXRF#@XA z1!7;I+GK_zp!#AUP6Mh^U6$5pFbSnVWY6GDH1FxTy|Ch3*$zt^r`&-IfdMD(; z>;=&vtPIqb#*hMZLmE)MBSQetJs}LC3@!|w4E_x9K++Frwm*Y6gDX%Bq9YY(H^}xP zppKO6_SA2FyncThG)hTv8OTL2)AE4!gIu8i4iRG90CPPk1P3PsxeyY+8sRC~ERnx+ U7X*1Htq4NIgdPJ34h^3G0NS)-$p8QV literal 0 HcmV?d00001 diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/res/icon1.ico b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/res/icon1.ico new file mode 100644 index 0000000000000000000000000000000000000000..481add20a12a19ed082fbb7091cc1bb37342a565 GIT binary patch literal 6006 zcmeH~F;4Iw`!B{o+`VI{Q`UL&n%L1{vx5?)NbceZpq^9H$ z%AwB2j)NU@7>y9+a+xZX3RSCBsvXs+Ua!+>qd{lQCUq~m)Vu0Y|GH22VMxQ_ke(l( zXfm15`}B?G^EoXR3%8Jt>VP_s83&j-GiTL-ve zM#5OQ6egZ|AmWsP`2xBB;utt@_k$Bx$VmsjD9K*!8HbR*Ty0 zHl24mKYG={?O@fPMp2Zmrc?*ifs8p|e<&F{vmRF+PzN^W0R91g#uRUG`QZ=f3yN{` jiE-gdUOna$XcRC9J~OA4rV2%z734#FLCUyK6N)d}48Q=i1(|hD8{74(PAUo!t zkwlS8o<#260R}w2T~Xw4M17j!kXrxt$G<-dmQVQp37=2j3GpM2Z^S#U|8;4nlgH)5 z4MGe06I#y)e4{8nfBuXkHF*9L-ct!5{G%#5|F)&?8tz|SR zY0b{rwc9nbb0(Ij{VO*q?~MAe>C&yiAe-3T<#x^NWHMX+z0a;m`4G^K!X-qiYhibv z+ug}dwy--;j?mcHw^2@>SELt;U^hFSYGPOEcG7%rR5shSuTeHva=4=d98Jmrg!k}= zL>{8HViD}-4i7EtD&0=9X?c}oF^(1&r(s7pJ}m5%x42zJtyfY|zS1b4V&z~A{uU80 z&Q3mxZmdkQA%|z)pR?NnW-Q#vD?boN$iUy3vUh$^XvJqwELIM7 zTRi9*c8k3#zx#_l$ z`7wf>GyP;ce{!8hwedZIO`G{bnX>N{z)3^oLELs^YvvqX1M^+G-?1e#)%e{nq8mKI zHm4B}Vk!5_K5RWkDtEE_K)J$=C*Ru#cXCrt?D$h)$I4(Q2Ps`=?d;s2%+4X#>p>vV z8jVCkFRyM(5-qTcTmv%?dll_{n@ z-64F3-WUCDR(4vVm10(m@I1uqbAH#%u6k|E{=@8Y8UaEm^xeFqFi2nsv_x)aM`jSS zgI1TxcgVM3*O_t27mAyctI^~r4EddL2JDO(o}KU7^K3P{o^F}h*)W&UV9Nq_^O8nc z^4COeVCUW`n84~x5j$;)DmU`GyWXhA4Pd4iEEp`6w_ z-&tNO;zqA*Wv3dRgthL7Wn~3BXul}CkK|5IqcfZ<1|(SWJ2(=tBmaX-DH=1eOO!pb z2@61DwqCX{tV{ZArKCCXM0a7sNu6%mWg8GGM~EF8)29I;beRkcPTO+1TyCBY`5uSRyk zkMr3vGzIIkixRgoJG$)=euo439rm3IJMz2{&q&gXNJaM64O~!0reJooMgcqsVCK8q zbziaUX{*@5p6A!cbm2V-F}X#xU4%IfL$JeuctWn2?>1tbW0G;^e#g6; z4!b7vJiGIT16x$~yTs~pGP6sSEyZj}IjURP`A4p-VTV_fLS4GeO(Jt?G0wB^)26~1 z4P_Q)o@nIkXcQO+zRTxTn< zT49o0x^Sn@_h?(+fresRE;n6Z_xxqivQ7WyiF3uCc9U{sXxZ5FZ}s#btJ&4O8sQx( z@5%a#eFf&w+40t0a5T(Y*qtfQVn5pPd>0wJE)u(H<*4(e?Do=#Vs=Nsu3kB|!=Z{VPT6=(dL-fZS#_j|_SJ*> zV}B-VJti+KeF_io26oZ#j@i{KN1CCCm#S4Vud75pC6#(R@kXH@edus3;0Bo^H_`sO z*){(ZmE7BNCtAGaUmyxNN?k0$`=QX%$_~rANS;)|Rb0Ka+V;Tv zrR?&p?9%^Ya?b1}6-~-X&-J9IwDjU4DF_P_SmT9S*)2QcWimgym|Z7*Ivy#P+Aq93 rxv6W(+*&995nIArE1Qqa?3%A|R|kG0aF>Nw?EICpd&N7y-?aE2BH literal 0 HcmV?d00001 diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/resource.h b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/resource.h new file mode 100644 index 0000000000000000000000000000000000000000..31feea645ead7995a201c7c372d845fe78ddf5a2 GIT binary patch literal 4138 zcmbuC-D(<96oog1-V_RbgAVkj5U3_5Q7`>VD%F|bs7-q#iBU)i3NfaEQhHP9L-aj+ z*>_FSIf zw*~Q}E7vlXTbauOpQ+s8+7Q50D`wO&2lXr@+eLDAKkVwEtsP{yOpf(4E4RA!*c+M1EK4~v+52atraYn_q@2NM zo|!S!l}39hH(ihLNc&-K`k@--5&bAPU61sLew>?roI-m!H@%#KUdc_bsC2&PgH@dp z#ag-}7m?LOdSA{{z7^J=YU!1PHHO-opr2&+#pP-RS+3BGl2{JOSnXHL7GtE9i( zk*?<|=^a!N?HtZK?Ru_SdbTRXIp*kku9BX$QrV>Ixk`H0YGsq2l&f`9FSEw*SMP%= zBG?g<_SPBxT8l`xidFGWPa?(Lb9CMJh@N+itV*))AK^-1It$h^aVq1lIqkadoYjbK zdzN_C|5qK|u95WKc4j_$p$F5C+3x7VbW`ll?oD^K#Qg=%rs%kCv1jk}8T+|h$|oGN z8(WyUv^+bj*Z95Vd8oY3Or<|CwG4Yk`Z9z^?@WCYjhH2jVKmo3V8nIg11KTByQXL3 z8W0yv?CtpM5yrI4`fRfz1Z9ByXy7VWKXx|*9B;bDx-x#Q(=F} v#J^KCx{r0Pho^M5&~5b>zi!5{t&^-ZlU36nvfbNcf@ruxKRsQ!zkdD~fWE_@ literal 0 HcmV?d00001 diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/stdafx.cpp b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/stdafx.cpp new file mode 100644 index 0000000..cb7cb65 --- /dev/null +++ b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/stdafx.cpp @@ -0,0 +1,8 @@ + +// stdafx.cpp : 只包括标准包含文件的源文件 +// SectionCalculation.pch 将作为预编译头 +// stdafx.obj 将包含预编译类型信息 + +#include "stdafx.h" + + diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/stdafx.h b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/stdafx.h new file mode 100644 index 0000000..a2e5acf --- /dev/null +++ b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/stdafx.h @@ -0,0 +1,54 @@ + +// stdafx.h : 标准系统包含文件的包含文件, +// 或是经常使用但不常更改的 +// 特定于项目的包含文件 + +#pragma once + +#ifndef VC_EXTRALEAN +#define VC_EXTRALEAN // 从 Windows 头中排除极少使用的资料 +#endif + +#include "targetver.h" + +#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 某些 CString 构造函数将是显式的 + +// 关闭 MFC 对某些常见但经常可放心忽略的警告消息的隐藏 +#define _AFX_ALL_WARNINGS + +#include // MFC 核心组件和标准组件 +#include // MFC 扩展 + + +#include // MFC 自动化类 + + + +#ifndef _AFX_NO_OLE_SUPPORT +#include // MFC 对 Internet Explorer 4 公共控件的支持 +#endif +#ifndef _AFX_NO_AFXCMN_SUPPORT +#include // MFC 对 Windows 公共控件的支持 +#endif // _AFX_NO_AFXCMN_SUPPORT + +#include // 功能区和控件条的 MFC 支持 + + + + + + + + + +#ifdef _UNICODE +#if defined _M_IX86 +#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") +#elif defined _M_X64 +#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"") +#else +#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") +#endif +#endif + + diff --git a/Modify_Part3-ch09/SectionCalculation/SectionCalculation/targetver.h b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/targetver.h new file mode 100644 index 0000000..9518d24 --- /dev/null +++ b/Modify_Part3-ch09/SectionCalculation/SectionCalculation/targetver.h @@ -0,0 +1,8 @@ +#pragma once + +// 包括 SDKDDKVer.h 将定义可用的最高版本的 Windows 平台。 + +// 如果要为以前的 Windows 平台生成应用程序,请包括 WinSDKVer.h,并将 +// 将 _WIN32_WINNT 宏设置为要支持的平台,然后再包括 SDKDDKVer.h。 + +#include diff --git "a/Modify_Part3-ch09/\346\226\255\351\235\242\346\225\260\346\215\256.txt" "b/Modify_Part3-ch09/\346\226\255\351\235\242\346\225\260\346\215\256.txt" new file mode 100644 index 0000000..463aa6a --- /dev/null +++ "b/Modify_Part3-ch09/\346\226\255\351\235\242\346\225\260\346\215\256.txt" @@ -0,0 +1,47 @@ +H0,10.000 +K0,K1,K2 + +K0,4574.012 ,3358.300 ,12.922 +P01,4570.355 ,3382.210 ,10.558 +P02,4571.827 ,3372.090 ,10.619 +P03,4570.907 ,3362.574 ,10.771 +P04,4569.494 ,3355.660 ,14.233 +P05,4556.682 ,3361.789 ,16.660 +P06,4547.554 ,3364.421 ,17.352 +P07,4534.086 ,3370.041 ,17.158 +P08,4517.549 ,3376.080 ,17.345 +P09,4505.572 ,3383.182 ,15.637 +P10,4498.562 ,3390.196 ,13.033 +P11,4494.457 ,3390.748 ,10.963 +P12,4500.501 ,3391.959 ,13.085 +P13,4510.753 ,3382.485 ,14.083 +P14,4522.092 ,3378.296 ,14.356 +P15,4531.567 ,3373.371 ,15.047 +P16,4546.386 ,3367.159 ,15.794 +P17,4556.219 ,3362.776 ,16.082 +P18,4559.558 ,3362.461 ,15.678 +P19,4554.746 ,3366.571 ,17.609 +P20,4545.254 ,3372.596 ,19.024 +P21,4540.860 ,3376.395 ,19.223 +P22,4536.141 ,3378.766 ,19.502 +K1,4534.227 ,3380.195 ,19.925 +P23,4525.945 ,3383.019 ,18.152 +P24,4519.592 ,3385.587 ,18.060 +P25,4513.249 ,3391.514 ,18.302 +P26,4523.724 ,3389.414 ,18.811 +P27,4537.846 ,3387.734 ,18.239 +P28,4540.773 ,3379.044 ,18.344 +P29,4549.894 ,3382.932 ,16.482 +P30,4543.390 ,3387.292 ,16.594 +P31,4546.992 ,3381.416 ,16.637 +P32,4558.964 ,3370.594 ,16.666 +P33,4565.741 ,3367.802 ,13.835 +P34,4561.203 ,3375.941 ,13.732 +P35,4561.762 ,3385.330 ,13.068 +P36,4569.250 ,3376.133 ,12.032 +P37,4572.318 ,3372.975 ,10.908 +P38,4568.279 ,3386.945 ,11.014 +P39,4550.913 ,3394.728 ,10.462 +P40,4537.754 ,3400.079 ,10.427 +P41,4509.525 ,3411.290 ,10.478 +K2,4497.844 ,3403.422 ,10.836