#ifndef AFX_C_3D_SIMULATION_DLG_H_20191223_INCLUDE_H #define AFX_C_3D_SIMULATION_DLG_H_20191223_INCLUDE_H #pragma once // C2DSimulationDlg 对话框 #define WM_MSG_UPDATE_CROSSHOLEMAINWND_BTN WM_USER+1000 class C3DSimulationDlg : public CDialog { DECLARE_DYNAMIC(C3DSimulationDlg) public: // 对话框数据 enum { IDD = IDD_DIALOG_SIMULATION_BOARD }; static C3DSimulationDlg* GetInstance(); void AddBoreholePointToVector(map> mapNewPoint); //将坐标点添加到井下集合 void AddSurfaceXPointsToVector(map> mapXNewPoints); //将坐标点添加到地表集合 void AddSurfaceYPointsToVector(map> mapYNewPoints); //将坐标点添加到地表集合 void DeleteCoordinatesPoint(); //设置时间间隔 void SetTimeInterval(int iTimeInterval); //获取整个测试列表 void SetSingleChannelSimulationRunMethod(vector vecAllBoreholeABMNInfo); void SetMultiChannelSimulationRunMethod(map>> mapPointsSortedByABMN); BOOL StartSimulation(); //开始模拟 BOOL StopSimulation(); //结束模拟 BOOL IsSimulating(); //是否正在模拟中 virtual BOOL OnInitDialog(); afx_msg void OnPaint(); protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 float CalcMaxCableLength(); //计算X/Y/Z线缆最大长度 DECLARE_MESSAGE_MAP() private: C3DSimulationDlg(CWnd* pParent = NULL); // 标准构造函数 virtual ~C3DSimulationDlg(); //模拟脚本跑极方式 static UINT SimulateScriptRunMethodThread(LPVOID lParam); //用户保存需要绘制的点 map> m_mapBoreholePoints; //STWellPoints存放X/Y坐标,vector存放井电极坐标 std::map> m_mapSurfaceXPoints; //地表X方向坐标 std::map> m_mapSurfaceYPoints; //地表Y方向坐标 BOOL m_bStopSimulation; //停止模拟 int m_iA; int m_iB; int m_iM; int m_iN; int m_iTimeInterval; //模拟跑极间隔 CRect m_rcWnd; //模拟器窗口大小 CRect m_rcBrush; //绘制电缆示意图区域 float m_fMaxCableLength; //X/Y/Z三个方向线缆最大长度 int m_iEachSmallSize; //每个单元格对应的像素 BOOL m_isNeedCalc; //是否需要计算值 CFont* m_pFont; //绘制字体大小 vector m_vecAllBoreholeABMNInfo; //单通道ABMN信息 map>> m_mapPointsSortedByABMN; //存放写入数据库ABMN信息,用于多通道,第一个int用于存放A,第二个int用于存放B,第三个int对应M,改变了的作用主要是用来控制多通道/单通道测点跑极方式的 }; #endif